C#基础知识(二)

01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图
答:前者是将str这块空间置空(或理解为对象置空),后者给str赋予了空字符串,两者显然是不一样的.你可以输出str和""的比较结果或分别输出两种情况下的str的串长就会发现问题,str=null根本就无法计算出串长或跟空格进行比较。

02:简述类和结构的相同点和不同点。并用代码举例。

定义类的语法    
 1 class Person
 2 {
 3    private string name;
 4    private int age;`在这里插入代码片`
 5    
 6    public void SayHi()
 7    {
 8        Console.WriteLine("Hello,My Name is "+this.name+",My Age is "+this.age);
 9    }
    定义结构的语法. 
 1     struct Rectangle
 2     {
 3         private int width;
 4         private int height;
 5          
 6         public int GetArea()
 7         {
 8             return this.width * height;
 9         }
10     }

a.在结构体中可以声明字段,但是声明字段的时候是不能给初始值的.
b.定义类使用关键字class 定义结构使用关键字struct.
c.在类下面只能直接定义类的成员,只能定义.

03:什么是拆箱和装箱?举例说明
答:
拆箱是把“引用”类型转换成“值”类型;装箱是把“值”类型转换成“引用类型”;
低类型–>高类型例:objecti=“aa”;这个是string–>object叫装箱拆箱:高类型–>低类型例:Stringi=(String)object;这个是string–>int叫拆箱.

04:编程实现一个冒泡排序

static void Main(string[] args)
{
int[] score = new int[5];
int i, j;//循环变量
int temp;//临时变量

        Console.WriteLine("请输入五位同学成绩:");
        for (i = 0; i < score.Length; i++)
        {
            Console.WriteLine("请输入第{0}位同学的成绩", i + 1);
            score[i] = int.Parse(Console.ReadLine());
        }

        //开始排序--冒泡排序
        for (i = 0; i < score.Length - 1 - 1; i++)
        {
            for (j = 0; j < score.Length - 1 - i; j++)
            {
                if (score[j] > score[j + 1])
                {
                    temp = score[j];
                    score[j] = score[j + 1];
                    score[j + 1] = temp;
                }
            }
        }


        //输出结果
        for (i = 0; i < score.Length; i++)
        {
            Console.WriteLine("{0}\n", score[i]);
        }
        Console.ReadLine();
    }
}

05:编程实现一个递归方法

#include <iostream.h>
class Questionone{
public: 
	int answer(int n, int sum){
		if(n>0){
			sum = 2*sum+2;	
			if(n-1>0){	
				cout<<"第"<<n-1<<"个村庄"<<"卖出"<<2*sum+2-sum<<endl;
			}
			n--;
			return answer(n,sum);
		
		}else{
			return sum;
		}
	}		
};
void main(){
int SUM = 2;
	int  N =  7;
	Questionone question;
	cout<<"总数:"<<question.answer(N,SUM)<<endl;	
}

06:说说目前学的集合有哪些?,每一种集合的特点以及使用场景
答:
ArrayList,List,Hashtable,Dictionary<key,value>
ArrayList和List获取,删除元素是通过下标或对象名获取;
Hashtable,和Dictionary<key,value>获取,删除元素是通过key获取。
List和Dictionary<key,value>访问元素无须转换。

07:变量被标记为 “const” 和readonly” 有何不同?
答:1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化

2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候

  此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。

08:“out” 和 “ref” 参数有何不同?用代码举例

public void num(ref int num1, ref int num2){ }
public void num(out int num1, out int num2){ }

09:“StringBuilder” 和 “String” 有何不同?
答:用string += 追加的时候会分配新的地址,StringBuilder不会 ,所以StringBuilder的运行速度会快,不会浪费资源空间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值