The Third Assignment

这一周的东西虽然看上去很熟悉。。。。However,和C++还有JAVA的差距还是挺大的。。。。

1.首先类的定义中,成员变量还有函数默认是private这和之前C++还有Java是一样的。。

然而在C#中又多了internal和protected internal两个访问级别

2.C# 4.0 函数允许声明optional arguments.

class Program
    {
        static void Main(string[] args)
        {
            test(5); //这里只传进去了一个int a
            test(5, 3.1f);
        }
        static void test(int a,float b=5.5f)//如果没有参数b传入就默认b等于5.5,如果有传入就将其赋值给b
        {
            Console.WriteLine("the first arguments is : {0}, the first arguments is : {1}", a, b);
        }
    }

比如这样,可以给参数一个默认值,如果没有传入参数就取默认值。

那么问题来了。。。挖掘机。。。咳咳。。如果只是中间几个变量想给默认值怎么办?

static void Main(string[] {
    Email a = new Email();
    a.SendMail("aaaa", "bbb");
    a.SendMail("aaaa", "bbb", d: true);
    a.SendMail("aaaa", "bbb", true, true);
}
class Email
{
    public void SendMail(string a,string b,bool c = true,bool d= false)
    {
        Console.WriteLine("{0}, {1}, {2}, {3}", a,b, c, d);
    }
}

像这样,传入参数的时候用定义函数时的参数名:传入的参数即可。。。

3.C#中多了ref和out这两个关键字。。。类似于C/C++中的&。。

其中在使用这两个关键字传入参数时,ref要求传入的参数必须有一个初始值。。

而out允许未初始化的变量传入,并在函数中进行初始化。。

只用说的不直观。。看代码。。

    class Program
    {
        static void Main(string[] args)
        {
            int h1=0,m1=0,s1=0;
            GetTime( h1, m1, s1 );

            Console.WriteLine("h1={0},m1={1},s1={2}",h1,m1,s1);
        }
        static public void GetTime( int h, int m, int s )
        {
            h = 12;
            m = 34;
            s = 56;
        }

    }

这是只把数值传入函数。。

     static void Main(string[] args)
        {
            int h1=0,m1=0,s1=0;
            GetTime( ref h1, ref m1, ref s1 );
            Console.WriteLine("h1={0},m1={1},s1={2}",h1,m1,s1);
        }
        static public void  GetTime( ref int h, ref int m, ref int s)
        {
            h = 12;
            m = 34;
            s = 56;
        }

ref的正确使用方法。。。

        static void Main(string[] args)
        {
            int h1,m1,s1;
            GetTime( out h1, out m1, out s1 );
            Console.WriteLine("h1={0},m1={1},s1={2}",h1,m1,s1);
        }
        static public void  GetTime( out int h, out int m, out int s)
        {
            h = 12;
            m = 34;
            s = 56;
        }    

out的正确使用方法。。。

(overloading和overriding和之前一样就不再唠叨了。。

4.继承和多态。。。

基本定义和C++/Java一样。。只不过多了一些关键字。。。

比如sealed(感觉和Java里的final一样。。

sealed类不能被继承。。。

时间: 2024-10-29 03:53:44

The Third Assignment的相关文章

Algorithm Part I:Programming Assignment(2)

问题描述: Programming Assignment 2: Randomized Queues and Deques Write a generic data type for a deque and a randomized queue. The goal of this assignment is to implement elementary data structures using arrays and linked lists, and to introduce you to g

RailsCast26 Hackers Love Mass Assignment rails中按params创建、更新model时存在的安全隐患

Mass assignment是rails中常用的将表单数据存储起来的一种方式.不幸的是,它的简洁性成了黑客攻击的目标.下面将解释为什么及如何解决. 上述表单为一个简单的注册表单.当用户填入name,点击提交时,一个新用户被创建.用户模型被如下定义: ruby create_table :users do |t| t.string :name t.boolean :admin, :default => false, :null => false end 当用户点击提交时,如下的action被执

hdu4781 Assignment For Princess(构造)

题目链接:hdu4781 Assignment For Princess 题意:n个点m条边,每条有向边的权值分别是1,2,3…m,一个点能到达任意一个点,没有重边和自环,没有任何两条边的权值相同,任意一个有向环的权值和必须是3的倍数,现在需要把这个图输出来. 题解:注意到题目给出的范围m >= n+3,所以一定是可以构造出一个1~n的回路使得权值和为3的倍数的,可以让前n-1条边权值为1~n-1,第n条边(n->1)可以为n, n+1, n+2从而满足题意,后面再连任意两条不相邻的边时,边权

<Effective C++>读书笔记--Ctors、Dtors and Assignment Operators

<Item 5> Know what functions C++ silently writes and calls 1.If you don't declare them yourself, compilers will declare their own versions of a copy constructor, a copy assignment operator, and a destructor. Furthermore, if you declare no constructo

POJ 3189 Steady Cow Assignment(最大流)

POJ 3189 Steady Cow Assignment 题目链接 题意:一些牛,每个牛心目中都有一个牛棚排名,然后给定每个牛棚容量,要求分配这些牛给牛棚,使得所有牛对牛棚的排名差距尽量小 思路:这种题的标准解法都是二分一个差值,枚举下界确定上界,然后建图判断,这题就利用最大流进行判断,值得一提的是dinic的效率加了减枝还是是卡着时间过的,这题理论上用sap或者二分图多重匹配会更好 代码: #include <cstdio> #include <cstring> #inclu

hdu 1845 Jimmy’s Assignment (二分图)

Jimmy's Assignment Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 896    Accepted Submission(s): 379 Problem Description Jimmy is studying Advanced Graph Algorithms at his university. His most

FreeRTOS的application assignment

Please follow the steps precisely in order to complete the objectives of the assignment. If you use the C++ FreeRTOS framework, it should make the assignment significantly easy. Create a producer task that takes 1 light sensor value every 1ms. Collec

用户无法进入SDSF,报NO GROUP ASSIGNMENT错误

注:命令行小写部分表出需要根据自己的情况改变!! a)激活SDSF资源类 SETROPTS CLASSACT(SDSF) b)查看SDSF资源类的PROFILE RLIST SDSF * c)如果不存在GROUP.ISFUSER.servername的PROFILE,则需要定义, RDEFINE SDSF (GROUP.ISFUSER.servername) OWNER(userid or group name) UACC(READ) 这样,所有用户都可以有读取权限,就都可以访问SDSF了 附1

遇到local variable &#39;e&#39; referenced before assignment这样的问题应该如何解决

问题:程序报错:local variable 'e' referenced before assignment 解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变量进行重新的声明 通常这样的问题对于python的程序员来说都是因为习惯了python2的语法,转移到python3中时,出现的错误.在Python3中,异常对象无法在异常块作用域外访问.(原因是在垃圾收集器运行且从内存中清理引用之前会在内存栈帧中保存一个引用周期)通常参考下面这个例子来做异常处理:

HDU 5289 Assignment(单调队列)

Assignment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 297    Accepted Submission(s): 152 Problem Description Tom owns a company and he is the boss. There are n staffs which are numbered fro