聚合文章列表
5 浏览

asp.net ckfinder 图片不同host路径问题

首先获取host->http://stackoverflow.com/questions/689678/request-url-host-and-applica...publicstaticstringGetSiteRoot(){stringport=System.Web.HttpContext.Current.Request.ServerVariables["SERVER_PORT"];if(port==null||port=="80"||port=="443")port="";elseport=":"+port;stringprotocol=System.Web.HttpContext.Current.Request.ServerVariables["SERVER_PORT_SECURE"];if(protocol==

c# 2015-05-07 发布
3 浏览

原来C#的可空类型可以直接参与计算

偶然发现一个decimal?类型的数据直接参与计算并没有报语法错误。以为是VisualStudio2015中C#6.0的“空值判断”特性。为了避免在构建服务器的VisualStudio2013环境下不能编译通过,所以特别用VisualStudio2013重新打开项目观察,发一居然仍然没有语法错误。看来Nullable<>参与运算是C#一早就支持的语法,但是我需要证明。于是去翻MSDN,在UsingNullableTypes(C#ProgrammingGuide).aspx)找到了答案。Thepredefinedunaryandbinaryoperatorsandanyuser-definedoperatorsthatexistforvaluetypesmayalsobeusedbynullabletypes.Theseoperatorsproduceanullvalueiftheoperandsarenull;

c# 2015-08-07 发布
5 浏览

在 Visual Studio 2015 中使用C# 5.0

自7月20日VisualStudio2015(以下简称VS2015)发布以来,相信有不少人已经在团队没有宣布切换到VS2015的情况下偷偷的用上了VS2015。还好VS2015兼容旧版本的解决方案和项目文件,不会强制更新版本,所以用就用吧,也没人会说啥。除了感觉比VS2013卡之外也没有什么不对,当然还得除开一个问题:VS2015默认使用C#6.0语法自己写着玩儿的时候用C#6.0语法习惯了,难免在团队项目中用上——顺手的事嘛,何况C#6.0语法确实好用啊。问题是代码在本地编译通过之后提交到服务器,自动构建的时候却报错了——因为构建服务器是用的VS2013嘛,不支持C#6.0语法的——悲剧就这样产生了!解决办法一在“项目属性→生成→高级→语言版本”中设置“C#5.0”。这个设置保存在项目文件(.csproj)中,会对所有人造成影响。而且,如果解决方案中项目比较多的话,一个个设置起来挺烦人的。有图有真相解决办法二(可能需要ReSharper)直接在“解决方案资源管理器”中选中

c# 2015-08-09 发布
AD 友情赞助
2 浏览

解决Linq.ToDictionary()时的键重复问题

今天在使用Linq的ToDictionary()时发生了异常,提示:System.ArgumentException:已添加了具有相同键因为以前一直没有遇到有相同键的情况,所以从来没关注过这个问题。然后写段试验来码来处理这个问题问题再现classProgram{publicstaticvoidMain(string[]args){vardata=new[]{Tuple.Create("001","James"),Tuple.Create("002","Linda"),Tuple.Create("003","Frank"),Tuple.Create("004","Jack"),Tuple.Create("002","Rose"),Tuple.Create("001","Lynn"),T

c# 2015-08-10 发布
3 浏览

C# 并行计算(Parallel 和 ParallelQuery)

parallel英[ˈpærəlel]美[ˈpærəˌlɛl]adj.平行的;相同的,类似的;[电]并联的;[计]并行的adv.平行地,并列地n.平行线(面);相似物;类比;纬线vt.使平行;与…媲美;与…相比;与…相似System.Threading.Tasks.ParallelParallel主要提供了For系列方法和ForEach系列方法,并行处理所有项。两个系列的方法都有若干重载,但最常用也最易用的是这两个Parallel.For(intfromInclude,inttoExclude,Action<int>body)这个方法从fromInclude开始,到toExclude结束,循环其中的每一个数,并对其执行body中的代码。从参数的名称可以了解,这些数,包含了fromInclude,但不包含toExclude。这很像for(inti=fromInclude;i<toExclude;i++){body(i)},但与之不同的是

c# 2015-08-15 发布
4 浏览

C#中隐藏的15大顶级功能(1/2)

有关C#的15大顶级功能的第一个帖子是出现在AutomateThePlanet上。下面列出程序猿在C#编程生涯中最喜欢的C#功能,当然包括完整的解释和代码示例。1.ObsoleteAttributeObsoleteAttribute适用于除组件,模块,参数和返回值的所有程序元素。标记过时元素,并通知用户该元件将在产品的未来版本中删除。Message属性包含一个当assignee属性后将显示的字符串。IsError-设置为true,如果在代码中使用目标属性。publicstaticclassObsoleteExample{//MarkOrderDetailTotalAsObsolete.[ObsoleteAttribute("Thisproperty(DepricatedOrderDetailTotal)isobsolete.UseInvoiceTotalinstead.",false)]publicstaticdecimalOrderDetailTotal{

c# 2015-08-28 发布
AD 友情赞助
3 浏览

C#中隐藏的15大顶级功能(2/2)

9.未公开的C#关键字__arglist__reftype__makeref__refvalue我不确定这些能不能被当作C#中隐藏的功能,因为它们没有被公开,因此应该谨慎使用。没有一个关于原因的文档,也许是因为没有经过充分的测试。然而,它们由VisualStudio编辑器着色,并且识别为官方关键字。你可以通过使用__makeref关键字创建变量的类型引用。由类型引用表示的变量的原始类型可以使用__reftype关键字提取。最后,该值可以从使用__refvalue关键字从TypedReference获得。__arglist与关键字params具有相似的行为-可以访问参数列表。inti=21;TypedReferencetr=__makeref(i);Typet=__reftype(tr);Console.WriteLine(t.ToString());intrv=__refvalue(tr,int);Console.WriteLine(rv);ArglistTest.DisplayNumbersOnC

c# 2015-09-02 发布
2 浏览

闲谈异步调用“扁平”化

哦,代码……就把它们当成插图吧随着CPU从单核变多核,软件从注重功能到注重体验,Web从页面跳转方式到Web2.0的无刷新加载(AJAX),程序员越来越多的接触多线程和异步。而Android的主线程中不允许操作网络,更是将程序员们推向了异步的深渊。异步深渊产生的主要原因是回调,这在nodejs里尤其严重。//[node.js]doFirstThing(function(err,data){doSecondThing(data,function(err,data){doThirdThing(data,function(err,data){//...falldown})});});为了逃离回调的深渊,大家开始想各种办法来把回调扁平化。在JavaScript中,Promise(指该类方法而非某个库)成为众多解决方案的佼佼者,并成功被ES6采纳。//[node.js]doFirstThing()

c# 2015-09-13 发布
3 浏览

[TODO]Iterator, foreach, generics and callback in C# and Python

Itseemslikeahugetopic,sojustdivideitintosmallpiecesandconquerthempiecebypiece,Ihavedrawnamapforthisarticletoguidemefinishitinsteadofbeingscaredbyit.IteratorConceptofiteratorisherein#Wikipedia:Iterator,soIthinkiteratorisjustlikepointerinCorcursorindatabase.whyuseiteratorIteratorisjustanabstractconceptandcanbeimplementedinmanydifferentways.Butfirstofall,weshouldfigureoutwhyweneediteratora

c# 2015-09-26 发布
AD 友情赞助
0 浏览

实验报告 - C# HashAlgorithm.TransformBlock 方法

实验一classHashAlgorithmTest{publicstaticvoidMain(){byte[]data=Encoding.UTF8.GetBytes("abcdefghijklmn");HashAlgorithmsha1=HashAlgorithm.Create("sha1");byte[]output=newbyte[64];for(inti=0;i<data.Length;i+=4){varlength=Math.Min(4,data.Length-i);sha1.TransformBlock(data,i,length,output,i);Console.WriteLine

c# 2015-10-13 发布
16 浏览

如何修改一个Reference的Copy Local属性

具体方法可以参照微软官网:https://msdn.microsoft.com/en-us/library/t1zz5y8c(v=vs.90).aspx但是,有时候CopyLocal这个属性是灰的,不可以更改,这是为什么呢?原因在于,另外一个属性EmbeddedInteropTypes设置成了True,如果是这样,CopyLocal属性是不能被更改的。所以,只需要将EmbeddedInteropTypes设置成False,就可以更改CopyLocal属性了。

c# 2015-10-31 发布
3 浏览

[原创]Unity2D 开发 + UGUI 中文教程一

哈哈,首先解释一下为什么Spritekit系列没有继续更新。从今年(2015)四月份开始,发现Spritekit制作大一些的游戏很累,于是考虑换一款引擎尝试一下。刚好Unity5免费策略推出,2D功能也大大增强,于是开始转投Unity。在朋友鼓励下,推出Unity教程,希望能帮助那些想提高2D游戏开发效率的朋友们。ps:全系列都会使用5.2.0版本(目前最新5.2.2)进行开发。那么我们就开始吧!我会做一些很常见的比较简单的小游戏,帮助大家从零开始,首先来做一个跑酷小游戏。初识Unity2D创建新项目,名称我用的是JustRun。一定注意,项目类型有3D和2D之分,选择2D即可。点击创建,就进入了Unity主界面。这四个面板是最常用的,我只进行大致的解释,后面用得多了,大家自然会慢慢理解。面板1是游戏对象关系面板,直观地表示各个游戏对象之间的父子关系。面板2是属性面板,用来展示所选对象的各个组件和属性。面板3是场景编辑器,大量的场景编辑都需要在里面完成。面板4是工程面板,用来查看所有的资源和脚本。当然,如果大家的面板结构和我不一样,可以自

c# 2015-11-08 发布
AD 友情赞助
2 浏览

C# 版本微信 JS SDK 示例代码

由于官方文档示例代码里面没有包含C#版本的代码,本文主要分享C#版本的微信JS-SDK签名处理,所以这里进行简单分享。点击查看源码地址。概述微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。1.获取accesstoken首先,可以点击查看获取token的官方描述。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。由于接口频率限制,开发者必须在自己的服务全局缓存jsapi_ticket。///<summary>///获取AccessToken_token///</summary>///<returns></returns>publicstaticAccessTokenGetaccess

c# 2015-11-14 发布
2 浏览

Devexpress 15.1.8 Breaking Changes

|DevExpress15.1.8安装文件下载ASPxGridViewandEditorsSuiteBC3133:设置PageIndex属性为0不会影响EndlessPaging模式在之前的版本中,设置EndlessPagingPaging模式下的PageIndex属性为0,滚动的数据会回到第一页。从15.1.8版本开始,这个操作不会再影响网格了。可以调用ResetToFirstPage方法重置加载行并滚动到第一页。BC3130:en-US语言下更改了几种时间显示格式。LongDateOldformat:"dddd,MMMMdd,yyyy"Newformat:"dddd,MMMMd,yyyy"MonthDayOldformat:"MMMMdd"Newformat:"MMMMd"YearMonthOldformat:"MMMM,yyyy"Newformat:"MMMMyyyy"ASPxPivotGridBC3181:在ASPxPivotGrid页

c# 2015-11-16 发布
3 浏览

[原创]Unity2D 开发 + UGUI 中文教程二

哈哈,这个坑继续来填上~据我了解,很多人也像我刚开始那样,以为角色站在地上是使用重力模拟出来的效果,地面和角色都有刚体来实现,跳跃就是给角色一个向上冲力。但是这样做有很多弊端,最主要的就是,你无法精确控制角色的位移距离、方向等,因为这一切都由引擎代替你控制了。但是用代码模拟,可能好多新人光是想想就觉得头大,我怎么计算角色应该在哪呢?我怎么才能做出超越物理模拟的效果呢?下面我们就来一点点实现。添加跳跃按钮首先我们用ps涂一个纯色的矩形,作为跳跃按钮,然后将按钮的png放到Assets文件夹中。然后选GameObject菜单,进入UI子菜单,选择Button(一定注意不要错选到Component菜单里)点击之后,大家会发现屏幕上突然出现好大一坨按钮!我们先不要妄动,先看关系树,这里多出了一个EventSystem对象,这个是用来侦测事件的,然而我们现在还不用管它。还有个Canvas对象,点开以后有个Button,下面有个Text。哈哈,你刚刚就已经创建了一个UGUI(老版本有些人应该知道用的是NGUI)版的Button和Text了,这些我们以

c# 2015-11-17 发布
6 浏览

.net关于高拍仪上传图片后的处理

一.前台页面代码:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title><scripttype="text/javascript">varsavePath="D:\\capture\\";varisStart=false;functioninit(){createDir();}functioncreateDir(){captrue.bCreat

c# 2015-11-20 发布
8 浏览

从游戏脚本语言说起,剖析Mono所搭建的脚本基础

0x00前言在日常的工作中,我偶尔能遇到这样的问题:“为何游戏脚本在现在的游戏开发中变得不可或缺?”。那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又能提供怎样的脚本基础。最后会通过模拟Unity3D游戏引擎中的脚本功能,将Mono运行时嵌入到一个非托管(C/C++)程序中,实现脚本语言和“引擎”之间的分离。0x01Why?从为何需要游戏脚本开始首先聊聊为何现在的游戏开发需要使用游戏脚本这个话题。为何需要有脚本系统呢?脚本系统又是因何而出现的呢?其实游戏脚本并非一个新的名词或者技术,早在暴雪的《魔兽世界》开始火爆的年代,人们便熟知了一个叫做Lua的脚本语言。而当时其实有很多网游都不约而同的使用了Lua作为脚本语言,比如网易的大话西游系列。但是在单机游戏流行的年代,我们却很少听说有什么单机游戏使用了脚本技术。这又是为什么呢?因为当时的硬件水平不高,所以需要使用C/C++这样的语言来尽量压榨硬件的性能,同时,单机游戏的更新换代并不如网游那么迅速,所以开发时间、版本迭代速度并非其考虑的第一要素,因而可以使用C/

c# 2015-11-30 发布
8 浏览

“流感传染”问题

流感传染描述有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。输入第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。接下来的一行是一个整数m,m不超过100.输出输出第m天,得流感的人数此代码不是为了解答此题。因为vs2015不支持变长数组。不能满足题目要求。只是为了显示一种思路。#include<iostream>#include<iomanip>usingnamespacestd;constintN=5;//定义宿舍边长chardorm[N][N];//定义一个N*N的全局二维字符

c# 2015-12-02 发布
2 浏览

妥协与取舍,解构计算机中的二进制浮点数运算

0x00前言我在生活和工作中常常会遇到一些十分迷信机器的人,他们之中很多人都相信机器是最理智的,没有任何感情,是真正的铁面无私,因此机器的运算所给出的答案总是正确的,如果答案错误,那么一定是操作机器的人的问题。但机器的运算就一定是正确的吗?事实上,机器出现运算错误并不是一个罕见的情况,一个典型的例子便是小数运算。下面就让我们来聊一个相关的话题,在机器或者具体的说在C#语言中小数是如何被处理的?0x01先从一个“错误”的答案说起既然要聊一聊机器是怎么把算术题做错的,那么我们自然要先来看一个机器运算错误的小例子。#include<stdio.h>voidmain(){floatnum;inti;num=0;for(i=0;i<100;i++){num+=0.1;}printf("%f\n",num);}这是一份C语言写成的小程序,逻辑十分简单易懂,所要实现的结果无非是将0.1相加100次之后再

c# 2015-12-03 发布
1 浏览

[原创]Unity2D 开发 + UGUI 中文教程三

不知道上一篇里,大家是不是都做出了跳跃的效果。从这一节开始,我提交了代码到Github,大家如果有什么不明白的地方,可以去看源码。另外我的Github里还有两个以前写的spritekit游戏,大家也可以围观一下。传送门添加障碍物首先我们测试一下上一节提到的跳跃的数值,我测试出了一组比较合理的数据,大家可以试用一下。privatefloatjumpForce=15;privatefloatgravity=1;接着我们添加一个障碍物的素材到游戏中,然后将素材拖拽到关系树面板,会自动生成一个以该精灵为外观的游戏对象。我们在属性面板中,添加一个BoxCollider2D组件,和一个Rigidbody2D组件。点击AddComponent之后,直接输入组件的名字,下面会列出搜索结果,直接点击就可以。我来解释下这两个组件的作用,大家不明白可以百度一下,网上相应的介绍特别多。collider是设置一个碰撞盒,用来检测碰撞的组件。Rigidbody是刚体盒,表示这个游戏对象的物理属性,比如重量、密度等。据我所知,两个物体如果想检测碰

c# 2015-12-04 发布
AD 友情赞助