C#中的装箱与拆箱

一开始不明白是什么东西,现在明白了,也就那么回事。

装箱和拆箱:任何值类型、引用类型可以和object(对象)类型之间进行转换。装箱转换是指将一个值类型隐式或显式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的值装箱,就是创建一个object实例并将这个值复制给这个object,装箱后的object对象中的数据位于堆中,堆中的地址在栈中。被装箱的类型的值是作为一个拷贝赋给对象的。如:

int i = 10;
object obj = i; //隐式装箱
object obj = object(i); //显式装箱
if(obj is int) //int
       Console.WriteLine(“OK”);
Console.WriteLine(obj.GetType()); //System.Int32   

有两种方式来查看包装以后的引用对象中包装的原始数据的类型。要判断原始类型是否是某个给定的原子类型,用is;如果要返回一个字符串,可以用object类的GetType方法。

拆箱转换是指将一个对象类型显式地转换成一个值类型,或是将一个接口类型显式地转换成一个执行该接口地值类型。注意装箱操作可以隐式进行但拆箱操作必须是显式的。拆箱过程分成两步:首先,检查这个对象实例,看它是否为给定的值类型的装箱值。然后,把这个实例的值拷贝给值类型的变量。比如:

int i = 10;
object obj = i;
int j = (int)obj;

Read More →

C#验证输入的是否数字的几种方法

//方法一:
static bool IsNumeric(string str)
{
    if (str == null || str.Length == 0)
        return false;
    foreach(char c in str)
    {
        if (!Char.IsNumber(c))
        {
            return false;
        }
    }
    return true;
}
//方法二:
private bool IsNumeric(string s)
{
    char ch0 = '0';
    char ch9 = '9';
    for(int i = 0; i < s.Length; i++)
    {
        if ((s[i] < ch0 || s[i] > ch9))
        {
            this.lblwarning.Text = "此处应输入整数且非负!";
            return false;
        }
    }
    return true;
}
//方法三:
static bool IsNumeric (string str)
{
    System.Text.RegularExpressions.Regex reg1
    = new System.Text.RegularExpressions.Regex(@"^[-]?d+[.]?d*$");
    return reg1.IsMatch(str);
}
//方法四:(可扩展)
public static bool IsConvert(string Expression, Type DataType)
{
    switch(DataType.Name)
    {
    case "Double":
        try
        {
            Double.Parse(Expression);
            return true;
        }
        catch
    {
        return false;
    }
case "DateTime":
    try
    {
        DateTime.Parse(Expression);
            return true;
        }
        catch
    {
        return false;
    }
default:
    return true;
}
}
//C#验证输入的是否数字的方法,其实用正则表达式也可以
static bool IsNumeric(string str)
{
    if (str == null || str.Length == 0)
        return false;
    foreach(char c in str)
    {
        if (!Char.IsNumber(c))
        {
            return false;
        }
    }
    return true;
}
//正则表达的写法是:
static bool IsNumeric(string str)
{
    System.Text.RegularExpressions.Regex reg1
    = new System.Text.RegularExpressions.Regex(@"^[-]?d+[.]?d*$");
    return reg1.IsMatch(str);
}

Read More →

AdRotator Web 控件

今天看了一下,还是不错的一个控件:

ASP.NET 移动 Web 窗体 AdRotator 控件(基于 ASP.NET Web 窗体 AdRotator 控件)用于随机并循环显示一组广告横幅。AdRotator 控件自动进行循环处理,每刷新一次页面改变一次显示内容。可以对广告进行加权以控制横幅的优先级,从而使某些广告的显示频率高于其他广告。

您的应用程序也可以使用自定义逻辑来循环通过广告。若要在移动 Web 窗体页上生成广告,您必须提供广告的图像文件。您可以使广告图像与用户单击广告链接时将浏览到的目标 URL 相关联。

AdRotator 控件必须放在 Form 或 Panel 控件内,或者放在模板内。AdRotator 控件需要包含图像的 URL 的 XML 文件。此文件还可以指定每个广告的导航链接。使用 AdRotator 控件“属性”窗口中的 Advertiseme

Read More →

sql2000挂起无法安装的问题

虽然SQL的安装次数不下10次,不过这次装还是没有记住,记下来,要用时省到网上去找啊!

1)添加/删除程序中彻底删除sql server。

2)将没有删除的sql server目录也删除掉。

3)打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。

4)删除注册表中跟sql server相关的键。

其实估计只要做第3步就可以搞定,这样就可以清除安装暂挂项目。自己是先走了1,2,4,最后做了3才搞定。所以估计3才是最关键的

Read More →

.NET开发中的一些小技巧

这篇文章来自是Mukund Pujari的《Some Cool Tips for .NET》,我是网上看到的,觉得还不错啊。大家一起分享啊!

1. 如何创建一个可改变大小没有标题栏的窗体?(How to create a form with resizing borders and no title bar?)

form1.Text = string. Empty;

form1.ControlBox = false;

2. 如何在.NET的Windows窗体上启用XP主题集?(How to use XP Themes with Windows Forms using the .NET?)

确认你的控件中FlatStyle属性已经修改为System,再修改Main方法。

static void Main()

{ Read More →

xp sp2 iis5.1 其他人不能访问本机网站!

xp sp2 iis5.1 其他人不能访问本机网页。但是可以ping通

一开始想不出什么原因,自己的机子上是能够访问的,但是为什么别人不能去访问!?

找了半天原因是防火墙的原因,关了就OK了!

Read More →

让收费网站去死吧,用google 突破[转]

首先打开Google,在关键词输入框中输入''''index of/''''inurl:lib(双引号为英文状态下),选择“搜索简体中文网页”选项,回车搜索,得到了一些网页,不要以为这是一些普通的页面,其实它们是一些图书网站的资源列表,点击打开它来看看,怎么样?是不是所有资源一收眼底了?

使用其他关键字可能得到更多的资源

在搜索框上输入:''''index of /''''cnki

再按搜索你就可以找到许多图书馆的CNKI、VIP、超星等入口!

在搜索框上输入:''''index of /'''' ppt

再按搜索你就可以突破网站入口下载powerpint作品

在搜索框上输入:''''index of /''''mp3

再按搜索你就可以突破网站入口下载mp3、rm等影视作品

在搜索框上输入:''''

Read More →

用c#读文件

using System;
using System.IO;
using System.Collections;

class Anagrams 
{
    
    public static void Main(String[] args)
    {
        StreamReader din = File.OpenText ("words.txt");
        String str;
        StringTable st = new StringTable(); 
        
        Console.WriteLine("Reading data and insterting into a StringTable.");
        while ((str=din.ReadLine()) != null) {
            st.Add(str);
        }
        Console.WriteLine("Printing out the StringTable.");
        foreach (string s in st)
        {
            Console.WriteLine (s);
        }
        
        Console.WriteLine (" Press Return to exit.");
        Console.Read();
    }
}

Read More →

打到一个很有用的的显IP代码!分享一下!

<iframe

src=''http://ip.91.com/ip/showip.asp?text=000000&bg=A9A9A9&line=1&scro=0

&leng=140'' frameborder=''0'' scrolling=''no'' width=''320'' height=''16'' marginheight=''4''  marginwidth=''0''>

</iframe>

 

Read More →

网站信息的可用性设计

我们都知道,一个以信息为主要内容的站点,其页面中的信息组织形式、版式、分类等将直接关系到用户在这个页面的浏览体验。

目前网站的信息排列方式主要有以下几种方式:

1.文字列表形式

此种形式在网站中使用率最高,优点是在“寸土寸金”的有限空间内尽可能地放更多的内容。缺点比较明显:单一的文字列表重复使得用户的眼睛找信息找到眼花,浏览体验大大下降,重点不突出。尤其在中文的显示方式下这些缺点则更加突出。

目前设计师的解决办法一般是在每一行文字前加一个修饰点,用以引导用户的浏览;加分割线将每一行都分割开来;控制行间距等等。

当然在某一个区域内进行这样的补偿设计是很有效果的。但是,如果整个页面大量的采用这种方式,则还是会影响用户的阅读。

2.图片形式

以往的用户研究中,网站上的图片被关注程度往往要高于文字信息。图片传达给用户

Read More →
在线学习答案查询入口
微信扫一扫
微信扫码联系