.方法和参数
Posted jiutianzhiyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.方法和参数相关的知识,希望对你有一定的参考价值。
方法和参数
System . Console . Write ("name")
命名空间 类 方法 参数
- 静态方法里只能调用静态方法。而动态方法里既可以调用静态方法,也可以调用动态方法。
namespace ConsoleApplication1
{
class Program
{
static string TestFunc()
{
return "123";
}
static void Main(string[] args)
{
TestFunc(); //静态方法里只能调用静态方法。
//而动态方法里既可以调用静态方法,也可以调用动态方法。
Console.WriteLine(TestFunc());
ConsoleApplication2.Class1.Func();
System.Console.ReadLine();
}
}
}
- 值传递
当函数被调用的时候,形参被创建,调用时带的参数被拷贝到刚创建好的形参,函数结束时,形参被摧毁。由于是参数的一个副本被传递到被调用的函数。所以,原始的参数不会被函数修改。
值传递的优点: 通过值来传递的参数可以是数字,变量,表达式。参数的值不会被“被调用的函数”修改。
值传递的缺点: 当函数被多次调用,值传递结构体和类会带来性能上的损害(耗时),给调用者返回值只能通过被调用函数的返回值。
static void Swap(int a, int b)
{
int t;
t = a; a = b; b = t;
}
static void Main(string[] args)
{
int a = 1;
int b = 2;
Swap(a, b);
Console.WriteLine("a={0} b={1}", a, b);
Console.ReadLine();
}
//输出结果还是 a=1 b=2 , 没有变化。
- ref 传引用
static void Swap(ref int a, ref int b)
{
int t;
t = a; a = b; b = t;
}
static void Main(string[] args)
{
int a = 1;
int b = 2;
Swap(ref a, ref b);
Console.WriteLine("a={0} b={1}", a, b);
Console.ReadLine();
}
特别注意:string虽然是引用类型,但是把它看成是char的数组,要共享修改也要加ref.
List是引用类型,共享修改,加ref和不加ref一样。
C#有两种类型,值类型和引用类型。引用类型:类似指针。
值类型:包括int, double, bool, char
ref和out的区别:
- 使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。
- 使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
- out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
重载:
方法名相同, 但参数必须不同.
泛型:
通俗点叫模板 , 例如下面的
static void Swap<T>(ref T a, ref T b)
{
T t;
t = a; a =b; b =c;
}
累加:
理解为可变参数, 数组型参数, params: parameters参数
形式为: 方法修饰符 返回类型 方法名(params 类型[] 变量名)
static int Sum(params int[] nums)
{
return nums.Sum();
}
递归:
自己调用自己, 必须要有约束条件
文件和目录:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.IO;
namespace Demo1
{
class Program
{
static long FileOrDirCount(string path)
{
long count = 0;
try
{
//统计文件的个数
var files = Directory.GetFiles(path);
count += files.Length;
//统计目录的个数
var dirs = Directory.GetDirectories(path);
count += dirs.Length;
foreach (var dir in dirs)
{
count += FileOrDirCount(dir);
}
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine(ex.Message);
//throw;//抛出异常,需要被catch接住
}
return count;
}
static void Main(string[] args)
{
Console.WriteLine(FileOrDirCount("F:\"));
Console.ReadLine();
}
}
}
错误和异常:
try catch抛出异常
static void Main(string[] args)
{
try
{
throw new Exception();
}
catch (exception)
{}
Console.WriteLine(123);
Console.ReadLine();
}
以上是关于.方法和参数的主要内容,如果未能解决你的问题,请参考以下文章
ASP.net MVC 代码片段问题中的 Jqgrid 实现