有如下:
using System;namespace tyt
{
class myClass
{
int k;
string name;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static string str;
static myClass mc;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
if(Class1.str == null)
{
Console.WriteLine(Class1.str);
}
//myClass mc;
if(Class1.mc == null)
{
Console.WriteLine(Class1.mc.ToString());
}
}
}

Console.WriteLine(Class1.str);在str为null时不会抛出异常,而Console.WriteLine(Class1.mc.ToString());却会抛出异常。
想知道当mc为null时,怎么让Console.WriteLine(Class1.mc.ToString());不抛出异常,而是往控制台写一个空字符??

解决方案 »

  1.   

    str没实例化,只是一个引用,需要使用new在托管堆上分配空间才可以,否则回抛出异常。
      

  2.   

    把NULL TOSTRING自然会抛异常。
    if(Class1.mc == null)
    {
    Console.WriteLine(“”);
    }
      

  3.   

    你没有实例化myClass
    mc = new myClass();
      

  4.   

    回复人: wuyazhe(我的宝贝叫阿刺) ( ) 信誉:100  2005-10-14 09:00:00  得分: 0  
     
     
       str没实例化,只是一个引用,需要使用new在托管堆上分配空间才可以,否则回抛出异常。
      
     
    string是不需要实例化的,因为string并不是类。
    只是myClass没有实例化。
      

  5.   

    using System;namespace tyt
    {
    class myClass
    {
    int k;
    string name;
    }
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    static string str = null;
    static myClass mc = new myClass();
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    if(Class1.str == null)
    {
    Console.WriteLine(Class1.str);
    }
    //myClass mc;
    if(Class1.mc == null)
    {
    Console.WriteLine(Class1.mc.ToString());
    }
    }
    }
    }
      

  6.   

    if(Class1.str == null)
    if(Class1.mc == null)
    两句都为真,但是在监视窗口str==null而mc==<未定义的值>,类似的,如果不给一个int k显示赋值,编译器会将k赋为0。
    string型的null、int型的0和一般类型的<未定义的值>有何区别?
      

  7.   

    Console.WriteLine(
    (Class1.mc==null? "":Class1.ms.ToString());
      

  8.   

    mc==<未定义的值>,就是你没有给类实例化,就像指针指空的概念。