posts - 15,  comments - 191,  trackbacks - 9
  2008年4月1日

今天到公司后打开VS2005出现了如下图的状况,真是不可思意,今天是愚人节,难道是有人和我开玩笑?重启了几次还是这样子,第一次看到VS2005的Bug.

posted @ 2008-04-01 13:21 SouthSea 阅读(2627) | 评论 (35)编辑
  2007年11月27日
     摘要:   阅读全文
posted @ 2007-11-27 11:21 SouthSea 阅读(738) | 评论 (8)编辑
  2007年11月23日

这段是时间学习LINQ的同时学习了C#3.0的一些新特性,发学它和JavaScript很像

一、C#新特性的 自动属性 & JavaScript JSON
C#代码:

public class Person
{
    
public Person() { }
    
public string Name getset; }
    
public int Age getset; }
}


//创建一个Person对象
Person person = new Person { Name="Southsea", Age=22 };

JS代码:

var person = {name:"Southsea",age:22};
//下面可以通过person来调用它的name属性和age属性
alert(person.name+" "+person.age);

相似这处:在创建一个对象的时候可以直接给属性赋值
C#是用 " = " 而 JS 是 " : "

二、C# 扩展方法 & JS 中的 prototype

C#代码:

//定义扩展方法
public static String ToMyString(this DateTime dt)
{
    
return dt.Year + "-" + dt.Month + "-" + dt.Day;
}


//扩展方法的调用
DateTime today = DateTime.Now;
today.ToMyString();

JS代码:

Date.prototype.toMyString = function(){
    
return this.getFullYear()+ "-" + (this.getMonth()+1+ "-" + this.getDate();
}


var today = new Date();
alert(today.toMyString());

这个例子可以说没有任何义意,只是说明它们很像而已。

它们应该不只这两个地方很像,在以后的学习和使用中,再去慢慢发现它吧

posted @ 2007-11-23 22:03 SouthSea 阅读(237) | 评论 (0)编辑
     摘要:   阅读全文
posted @ 2007-11-23 20:59 SouthSea 阅读(1687) | 评论 (8)编辑
  2007年11月7日
    LinQ学习之旅(1) LinQ学习之旅(2)

    其实第二次的例子与LinQ一点关系都没有,只是我在学习LinQ的时候看到C#的一些新特性,把写我的学习之旅中。

    这次又学到了一些新特性,可以说与LinQ不相关的,但我也把它写入我的学习之旅。

   扩展方法 (Extension Methods)
    
    我们平时在使用要判断一个字符串是不是邮件地址的,以前的写法:
    
        public bool isEmailAddress(string email)
        
{
            Regex regex 
= new Regex(
                 
@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"); return regex.IsMatch(email);
        }

    使用:
bool isEmail = isEmailAddress("abc@abc.com");
    
    在新特性中,我们可以为各种数据类型增加一些方法    
    // 下面代码为string添加IsValidEmailAddress()方法
    public static class ScottGuExtensions   //强调必须是static类
    {
        
public static bool IsValidEmailAddress(
            
this string s)                  //参数写法 this 类 类对象
        {
            Regex regex 
= new Regex(
                
@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"); return regex.IsMatch(s);
        }

    }
    使用:只要引用命名空间即可使用扩展方法 
    在任何地方的字符串都出现IsValidEmailAddress方法
    "abc@abc.com".IsValidEmailAddress();
    像我在写LinQ的第一节的时候,判断一个数是不是偶数,可以写成扩展方法如:
    
        public static bool IsEven(this int i)
        
{
            
return i % 2 == 0;
        }
    在这个新特性中,我们可以为.NET已经封装好的一些类添加自己的一些方法。这样更方便我们开发了。
posted @ 2007-11-07 01:34 SouthSea 阅读(1307) | 评论 (7)编辑
  2007年11月5日
     摘要: 上一节:LinQ学习之旅(1)基础数据类型都可以像 LinQ学习之旅(1) 那样写,对数据的筛选、排序C#语言的新特性自动属性:在以前的我们写一个类属性一般都要定义一个私有变量,如:publicclassPerson{privateint_id;publicintId{get{return_id;}set{_id=value;}}privatestring_fristName;publicstri... 阅读全文
posted @ 2007-11-05 13:31 SouthSea 阅读(1689) | 评论 (17)编辑
     摘要:   阅读全文
posted @ 2007-11-05 12:35 SouthSea 阅读(2966) | 评论 (10)编辑
  2007年9月26日

由于THIN的《天气与生活》显示数据有误, 经THIN的同意,我对《天气与生活》进行修改,现已经修正了一些BUG,现在发布上来和大家共享。

下载新文体
如还有什么问题,请通知我或THIN,谢谢!

@zh0897提供保存城市问题解决方案:
关于显示城市的问题.在你装好《天气与生活》后,先进入到http://weather.cn.yahoo.com/ 网站,输入你所在城市名,并设置为默认城市.这样,你的《天气与生活》就会只显示你的城市了.

今天已经修正了保存城市问题,大家下载来试吧[11月27日]

posted @ 2007-09-26 22:59 SouthSea 阅读(5464) | 评论 (63)编辑
  2007年8月13日
      我们都知道asp.net的服务端控件在呈现到浏览器的时候生成的代码还是HTML代码,但为何它就行保存上次输入的值呢?
      在设计的时候我们写一句<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>,但在页面代码中我们会看到<input name="TextBox1" type="text" id="TextBox1" />但还看到<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMjgzMDgzOTgzZGRqBJ2DrJA0WVW8LiR3445iRDt1sg==" />
      同样的代码,我只是把TextBox给一个初始化数据<asp:TextBox ID="TextBox1" runat="server" Text="this text value"></asp:TextBox>,在页面代码中会看到<input name="TextBox1" type="text" value="this text value" id="TextBox1" />和<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMjgzMDgzOTgzZGRqBJ2DrJA0WVW8LiR3445iRDt1sg==" />
      看了这两次生成的代码没什么变化,只是输入框的值变了,在浏览器中输入值后,回传了一次后代码也只是输入框的value改变了。
      在没有深入了解asp.net服务端控件的生成及其值的保存前,就以为它的值就只靠value属性,但后来发现没那么简单。每个控件的值都会保存到ViewState中。(这里我就不说太多有关ViewState了,因为自己研究得还不够深入,怕说错了)
      在项目开发中,我们经常用到日历控件,但服务端的日历控件要回传,刷新界面,这给用户使用感觉很不好,在网上有很多Js日历控件,直接可以使用的,但我们经常是不给用户手动输入,只能选择,在代码设计时一般是写<asp:TextBox ID="txtCalendar" ReadOnly="true" runat="server" onclick="showCalendar();"></asp:TextBox>没给它一个初始日期,它的值通过JS来填充的。当我们点击提交的时候,总得不到它的值,都是空串,就算是给了初始化日期,在浏览器中已经改变它的值,但提交到cs代码中,日期还是初始化的那个,这是怎么回来呢?
      把输入框设为只读后,也就只有后台cs代码才能修改这个输入的ViewState的值了。
      我们可以通过HiddenField代替它,在JS中修改输入框的值的同时也把它的值给一份给HiddenField,在后台的cs代码直接取得HiddenField的值就可了。这是个投机取巧的方法,在很多时候我们用JS在界面做的一些值的修改,回到cs代码里都得不到自己要得到的值,因为JS没有直接修改到ViewState,我们只能通过这些小方法得到。
      上面所说的不一定正确,如果那位朋友感得问题,请指入。谢谢!
posted @ 2007-08-13 22:54 SouthSea 阅读(1100) | 评论 (8)编辑
     摘要: 这段时间手里有个有关订单的项目,订单一般有个状态的,以前很多要时候都会想到订单的状态就那几个种,就把它写死吧,不用一个数据库表了,太浪费资源了,但写死了用一个数字来代表一种订单状态,这样在编码时还要记得什么数字代码什么状态,如果不小心把它写错了,会导致数据出错。 后来想到.NET有个枚举,这么好的东西为何不用上来呢,这不但可以方便以后的代码维护,也方便编码。publicenumOrderState... 阅读全文
posted @ 2007-08-13 21:22 SouthSea 阅读(2640) | 评论 (38)编辑