c#类

1.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
string str =""初始化对象分配空间
而string str=null初始化对象
更详细的解释
这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的。string
str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,将报错。
2.简述类和结构的相同点和不同点。并用代码举例。
相同点:
都可以有字段,也可以有方法
如:

 public class Student
    {
         public int ID { get; set; }
         public int Age { get; set; } 
    }
     public struct Student2 
     {
         public int ID { get; set; }
         public int Age { get; set; }  
     }

不同点:
(1):不可以new,直接定义结构的对象即可。
(2):声明结构的对象后,必须给结构的成员赋值。

public struct  Student
{
	public int Id;
	public int Age;
	public void Show()
	{
		Console.WriteLine("Id:{0}\n年龄:{1}",Id,Age);
	} 
	static void Main(string[] arge)
	{
		Student stu;
		stu.Id=1001;
		stu.Age=16;
		stu.Show();
	}
}

3.什么是拆箱和装箱?举例说明
(1)装箱是将值类型转换成引用类型的过程。如:

 static void Main(string[] args)
        {
            int i = 123;
            object o = i;
            i = 456;
            Console.WriteLine("值类型值为:{0}",i);
            Console.WriteLine("引用类型为:{0}",o);
            Console.ReadLine();
        }

在这里插入图片描述

(2).拆箱是将引用类型强转为值类型

 static void Main(string[] args)
        {
            int i = 123;
            object o = i;
            int j = (int)o;
            Console.WriteLine("值类型值为:{0}",i);
            Console.WriteLine("引用类型为:{0}",o);
            Console.ReadLine();
        }

在这里插入图片描述
4:编程实现一个冒泡排序

static void Main(string[] args)
{
	 Sort();
}
public static void Sort()
{	
	int[] array={0, 8, 2, 3, 4, 9, 6, 7, 1, 5}
	 Console.WriteLine("原数组:");
	 for (int i = 0; i < array.Length; i++)
          {
              Console.Write(array[i]);
          }
          Console.WriteLine();
          //交换
          for (int i = 0; i < array.Length - 1; i++)
          {
              for (int j = i + 1; j < array.Length; j++)
              {
                  if (array[j] < array[i])
                  {
                      int temp = array[j];
                      array[j] = array[i];
                      array[i] = temp;
                  }
              }
          }
          //新数组
          Console.WriteLine("新数组:");
          for (int i = 0; i < array.Length; i++)
          {
              Console.Write(array[i]);
          }
          Console.WriteLine();
          Console.ReadLine();
}

在这里插入图片描述
5:编程实现一个递归方法

  public static int DiGui(int n)
      {
          if (n == 1)
              return n;
          return DiGui(n - 1) * n;
         
      }
      static void Main(string[] args)
      {
          DiGui(5);

         
      }

6:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
(1)ArrayList
特点:可以动态维护,它提供了一些方法对其中的元素进行访问,增加和删除操作。
使用场景:储存数据时。
(2)Hashtable
特点:Hashtable的数据是通过键(key)和值(value)来组织的,所以可以通过键和值来获取据。另外编码也很容易。
使用场景:(1)并发场景可以使用Hashtable,(2)Hashtable也要注意防止put null key和 null value。
(3)List
特点:
表示泛型,T是TYPEd的简写,表示当前不确定类型。
可以根据用户实际需要,确定当前集合需要存放的数据类型,一旦确定不可改变。
使用Add方法可以随意添加元素,没有个数限制。
使用Remove方法可以删除指定元素,元素删除后索引自动调整。
通过索引访问元素
使用场景:如果您的使用模式很少需要删除和大量添加,而重要的是保持集合的顺序时使用
(4)Dictionary
特点:1.对所保存元素进行类型约束。2.添加/读取值类型元素无须装拆箱
使用场景:如果需要非常快地添加、删除和查找项目,而且不关心集合中项目的顺序
7:变量被标记为 “const” 和readonly” 有何不同?
1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候
8:“out” 和 “ref” 参数有何不同?用代码举例
out代码实例:

static void Main(string[] args)
        {
            string str = "初始化赋值";
            MethodOut(out  str);
            Console.ReadKey();
        }

        /// <summary>
        /// 只出不进  原来out参数在进入方法的时候,C#会自动清空它的一切引用和指向,所以在上面的out例子中,必需先要为str参数赋值
        /// </summary>
        /// <param name="str"></param>
        public static void MethodOut(out string str)
        {

            str = "Hello World!  ---out";
            Console.WriteLine(str);
        }

在这里插入图片描述
ref代码实例:

//ref参数的参数必须最先初始化,
        static void Main(string[] args)
        {
            string str = "初始化赋值";
            MethodRef(ref str);

            Console.ReadKey();
        }

        /// <summary>
        /// 是有进有出  ref参数在使用前必需初始化,而out不需要。
        /// </summary>
        /// <param name="i"></param>
        public static void MethodRef(ref string str)
        {
            str = "Hello World! --Ref";
            Console.WriteLine(str);
        }

在这里插入图片描述
9:“StringBuilder” 和 “String” 有何不同?
string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。stringBuilder是.net提供的动态创建string的高效方式,以克服string对象恒定性带来的性能影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值