Aug
15
Jul
10
如下代码,一眼可以看出来输出结果显然应该是-1
然尔今天写代码时候遇到这个诡异的问题,不管如何变换,IndexOf("〇")结果总是0,也就是匹配任意字符串的开始部分.甚是奇怪,至今不明白为什么会是这个结果-_-!
通过IL反汇编得到如下结果:
即"〇"对应值是bytearray (07 30 ),初步猜想,此字符应该是特殊字符,在.net编译时做了特殊处理.具体回头查查资料先...
说明一下:"〇"是日文中常用字符,可以通过日文输入法输入maru(まる)得到
static void Main()
{
int intIndex = -1;
string strTest = "xxxxx";
string strMaru = "〇";
intIndex = strTest.IndexOf(strMaru);
Console.WriteLine(intIndex);
Console.Read();
}
{
int intIndex = -1;
string strTest = "xxxxx";
string strMaru = "〇";
intIndex = strTest.IndexOf(strMaru);
Console.WriteLine(intIndex);
Console.Read();
}
然尔今天写代码时候遇到这个诡异的问题,不管如何变换,IndexOf("〇")结果总是0,也就是匹配任意字符串的开始部分.甚是奇怪,至今不明白为什么会是这个结果-_-!
通过IL反汇编得到如下结果:
.method private hidebysig static void Main() cil managed
{
.entrypoint
// 代码大小 37 (0x25)
.maxstack 2
.locals init ([0] int32 intIndex,
[1] string strTest,
[2] string strMaru)
IL_0000: nop
IL_0001: ldc.i4.m1
IL_0002: stloc.0
IL_0003: ldstr "xxxxx"
IL_0008: stloc.1
IL_0009: ldstr bytearray (07 30 ) // .0
IL_000e: stloc.2
IL_000f: ldloc.1
IL_0010: ldloc.2
IL_0011: callvirt instance int32 [mscorlib]System.String::IndexOf(string)
IL_0016: stloc.0
IL_0017: ldloc.0
IL_0018: call void [mscorlib]System.Console::WriteLine(int32)
IL_001d: nop
IL_001e: call int32 [mscorlib]System.Console::Read()
IL_0023: pop
IL_0024: ret
} // end of method Program::Main
{
.entrypoint
// 代码大小 37 (0x25)
.maxstack 2
.locals init ([0] int32 intIndex,
[1] string strTest,
[2] string strMaru)
IL_0000: nop
IL_0001: ldc.i4.m1
IL_0002: stloc.0
IL_0003: ldstr "xxxxx"
IL_0008: stloc.1
IL_0009: ldstr bytearray (07 30 ) // .0
IL_000e: stloc.2
IL_000f: ldloc.1
IL_0010: ldloc.2
IL_0011: callvirt instance int32 [mscorlib]System.String::IndexOf(string)
IL_0016: stloc.0
IL_0017: ldloc.0
IL_0018: call void [mscorlib]System.Console::WriteLine(int32)
IL_001d: nop
IL_001e: call int32 [mscorlib]System.Console::Read()
IL_0023: pop
IL_0024: ret
} // end of method Program::Main
即"〇"对应值是bytearray (07 30 ),初步猜想,此字符应该是特殊字符,在.net编译时做了特殊处理.具体回头查查资料先...
说明一下:"〇"是日文中常用字符,可以通过日文输入法输入maru(まる)得到
Mar
12
主要是练习Linq的插入,更新和删除操作.首先建一个Linq To Sql Class,并讲测试数据库的Post和Commnet两张表拖入,下面用代码说话
<script type="text/javascript" language="javascript">
function rowclick(i)
{
var t = $('grdPostInfo');
var r = t.rows[i+1];
$('txtUID2').innerText = r.cells[0].innerText;
$('txtPID2').innerText = r.cells[1].innerText;
$('txtContent2').innerText = r.cells[2].innerText;
}
</script>
function rowclick(i)
{
var t = $('grdPostInfo');
var r = t.rows[i+1];
$('txtUID2').innerText = r.cells[0].innerText;
$('txtPID2').innerText = r.cells[1].innerText;
$('txtContent2').innerText = r.cells[2].innerText;
}
</script>
Mar
11
落后就要挨打,05年Preview的玩意,好久前就开始看,一直没写过,写了才感觉真的爽
C#3.5出现了很多新特性,比如隐式类型本地变量,匿名类型,Lambda表达式,扩展方法,查询综合,宽松委托,自动实现属性,分部方法等.还是用代码来说明问题吧(只关心与Linq关系紧密的部分):
C#3.5出现了很多新特性,比如隐式类型本地变量,匿名类型,Lambda表达式,扩展方法,查询综合,宽松委托,自动实现属性,分部方法等.还是用代码来说明问题吧(只关心与Linq关系紧密的部分):
//实体,为了oo,将关系型数据库转化为实体对象
[Table (Name="Post")]
public class PostInfo
{
[Column(Name = "uid")] public int uid { get; set; }
[Column(Name = "pid")] public int pid { get; set; }
[Column(Name = "p_content")] public string p_content { get; set; }
}
[Table (Name="Post")]
public class PostInfo
{
[Column(Name = "uid")] public int uid { get; set; }
[Column(Name = "pid")] public int pid { get; set; }
[Column(Name = "p_content")] public string p_content { get; set; }
}
Feb
26
印象中除了写的小测试程序,好像一直用MySql和SqlServer,没用过Access
用SqlServer的时候,用微软的SqlHelper很是方便,最近自己写的一个小东西可能会用到Access,网上找了很多版本的,都不是很满意.于是乎自己拿SqlHelper.cs简单修改了一下,分享给需要的朋友下载(时间匆忙,简单修改了一下,可能会存在一些错误,见谅)
下载文件
用SqlServer的时候,用微软的SqlHelper很是方便,最近自己写的一个小东西可能会用到Access,网上找了很多版本的,都不是很满意.于是乎自己拿SqlHelper.cs简单修改了一下,分享给需要的朋友下载(时间匆忙,简单修改了一下,可能会存在一些错误,见谅)
下载文件 







