当前位置: 首页 > news >正文

网站建设单位是什么意思外贸网站用什么字体

网站建设单位是什么意思,外贸网站用什么字体,公司网页怎么修改,中国114黄页网站宣传广告文章目录 1 方法1.1 定义方法1.2 参数传递1.2.1 按值传递参数1.2.2 按引用传递参数1.2.3 按输出传递参数1.2.4 可变参数 params1.2.5 具名参数1.2.6 可选参数 1.3 匿名方法1.3.1 Lambda 表达式1.3.1.1 定义1.3.1.2 常用类型1.3.1.3 Lambda 表达式与 LINQ1.3.1.4 Lambda 表达式的… 文章目录 1 方法1.1 定义方法1.2 参数传递1.2.1 按值传递参数1.2.2 按引用传递参数1.2.3 按输出传递参数1.2.4 可变参数 params1.2.5 具名参数1.2.6 可选参数 1.3 匿名方法1.3.1 Lambda 表达式1.3.1.1 定义1.3.1.2 常用类型1.3.1.3 Lambda 表达式与 LINQ1.3.1.4 Lambda 表达式的捕获变量 1.4 外部方法1.4.1 定义1.4.2 使用 1.5 扩展方法1.5.1 定义1.5.2 操作示例 1 方法 一个方法是把一些相关的语句组织在一起用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类。 1.1 定义方法 当定义一个方法时从根本上说是在声明它的结构的元素。在 C# 中定义方法的语法如下 Access Specifier Return Type Method Name(Parameter List) {Method Body }下面是方法的各个元素 Access Specifier访问修饰符这个决定了变量或方法对于另一个类的可见性。Return type返回类型一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值则返回类型为 void。Method name方法名称是一个唯一的标识符且是大小写敏感的。它不能与类中声明的其他标识符相同。Parameter list参数列表使用圆括号括起来该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的也就是说一个方法可能不包含参数。Method body方法主体包含了完成任务所需的指令集。 下面的代码片段显示一个函数 FindMax它接受两个整数值并返回两个中的较大值。它有 public 访问修饰符所以它可以使用类的实例从类的外部进行访问。 class NumberManipulator {public int FindMax(int num1, int num2){/* 局部变量声明 */int result;if (num1 num2)result num1;elseresult num2;return result;}... }1.2 参数传递 当调用带有参数的方法时需要向方法传递参数。在 C# 中有三种向方法传递参数的方式 方式描述值参数这种方式复制参数的实际值给函数的形式参数实参和形参使用的是两个不同内存中的值。在这种情况下当形参的值发生改变时不会影响实参的值从而保证了实参数据的安全。引用参数这种方式复制参数的内存位置的引用给形式参数。这意味着当形参的值发生改变时同时也改变实参的值。输出参数这种方式可以返回多个值。 1.2.1 按值传递参数 这是参数传递的默认方式。在这种方式下当调用一个方法时会为每个值参数创建一个新的存储位置。 实际参数的值会复制给形参实参和形参使用的是两个不同内存中的值。所以当形参的值发生改变时不会影响实参的值从而保证了实参数据的安全。下面的实例演示了这个概念 using System; namespace CalculatorApplication {class NumberManipulator{public void swap(int x, int y){int temp;temp x; /* 保存 x 的值 */x y; /* 把 y 赋值给 x */y temp; /* 把 temp 赋值给 y */}static void Main(string[] args){NumberManipulator n new NumberManipulator();/* 局部变量定义 */int a 100;int b 200;Console.WriteLine(在交换之前a 的值 {0}, a);Console.WriteLine(在交换之前b 的值 {0}, b);/* 调用函数来交换值 */n.swap(a, b);Console.WriteLine(在交换之后a 的值 {0}, a);Console.WriteLine(在交换之后b 的值 {0}, b);Console.ReadLine();}} }结果 在交换之前a 的值100 在交换之前b 的值200 在交换之后a 的值100 在交换之后b 的值200结果表明即使在函数内改变了值值也没有发生任何的变化。 1.2.2 按引用传递参数 引用参数是一个对变量的内存位置的引用。当按引用传递参数时与值参数不同的是它不会为这些参数创建一个新的存储位置。引用参数表示与提供给方法的实际参数具有相同的内存位置。 在 C# 中使用 ref 关键字声明引用参数。使用 ref可以让方法直接操作调用方变量本身而不是它的副本。 ref 的作用 普通传值按值传递方法接收的是变量的副本对副本的修改不会影响原变量。引用传递ref 传递方法接收的是变量的引用对引用指向的内存进行修改会影响原变量。 栈与堆的关系 值类型如 int, float通常存储在栈上。引用传递时传递的是栈上变量的引用。引用类型如对象、数组存储在堆上。引用传递时ref 传递的是对堆上对象的引用。 下面的实例演示了这点 using System; namespace CalculatorApplication {class NumberManipulator{public void swap(ref int x, ref int y){int temp;temp x; /* 保存 x 的值 */x y; /* 把 y 赋值给 x */y temp; /* 把 temp 赋值给 y */} static void Main(string[] args){NumberManipulator n new NumberManipulator();/* 局部变量定义 */int a 100;int b 200;Console.WriteLine(在交换之前a 的值 {0}, a);Console.WriteLine(在交换之前b 的值 {0}, b);/* 调用函数来交换值 */n.swap(ref a, ref b);Console.WriteLine(在交换之后a 的值 {0}, a);Console.WriteLine(在交换之后b 的值 {0}, b);Console.ReadLine();}} } 结果 在交换之前a 的值100 在交换之前b 的值200 在交换之后a 的值200 在交换之后b 的值100结果表明swap 函数内的值改变了且这个改变可以在 Main 函数中反映出来。 1.2.3 按输出传递参数 return 语句可用于只从函数中返回一个值。但是可以使用 输出参数 out 关键字来从函数中返回两个值。输出参数会把方法输出的数据赋给自己其他方面与引用参数相似。 下面的实例演示了这点 using System;namespace CalculatorApplication {class NumberManipulator{public void getValue(out int x ){int temp 5;x temp;}static void Main(string[] args){NumberManipulator n new NumberManipulator();/* 局部变量定义 */int a 100;Console.WriteLine(在方法调用之前a 的值 {0}, a);/* 调用函数来获取值 */n.getValue(out a);Console.WriteLine(在方法调用之后a 的值 {0}, a);Console.ReadLine();}} }结果 在方法调用之前a 的值 100 在方法调用之后a 的值 51.2.4 可变参数 params 当声明一个方法时不能确定要传递给函数作为参数的参数数目。C# 参数数组解决了这个问题参数数组通常用于传递未知数量的参数给函数。 在使用数组作为形参时C# 提供了 params 关键字使调用数组为形参的方法时既可以传递数组实参也可以传递一组数组元素。但是一个方法中只能有一个可变参数 params且必须在形参列表最后一个位置 params 的使用格式为 public 返回类型 方法名称( params 类型名称[] 数组名称 )实例 using System; namespace ArrayApplication {class ParamArray{public int AddElements(params int[] arr){int sum 0;foreach (int i in arr){sum i;}return sum;}}class TestClass{static void Main(string[] args){ParamArray app new ParamArray();int sum app.AddElements(512, 720, 250, 567, 889);Console.WriteLine(总和是 {0}, sum);Console.ReadKey();}} }结果 总和是 29381.2.5 具名参数 具名参数允许调用方法时显式指定参数名称而不是按位置传递参数。这对有多个参数的方法特别有用因为可以选择性地设置某些参数而忽略其他参数。 优点 提高代码可读性。避免因参数顺序出错而导致的问题 void PrintDetails(string name, int age, string city) {Console.WriteLine($Name: {name}, Age: {age}, City: {city}); }// 具名参数调用 PrintDetails(name: Alice, age: 25, city: New York);// 顺序可以随意调整 PrintDetails(city: Los Angeles, name: Bob, age: 30);1.2.6 可选参数 可选参数允许为方法的某些参数指定默认值这样调用方法时可以省略这些参数 void Greet(string name, string greeting Hello) {Console.WriteLine(${greeting}, {name}!); }// 调用时省略可选参数 Greet(Alice); // 输出Hello, Alice!// 调用时显式传递可选参数 Greet(Bob, Hi); // 输出Hi, Bob! 1.3 匿名方法 在 C# 中匿名函数是一种没有名字的方法可以在代码中定义和使用。 匿名方法Anonymous methods 提供了一种传递代码块作为委托参数的技术。 在匿名方法中不需要指定返回类型它是从方法主体内的 return 语句推断的。 1.3.1 Lambda 表达式 1.3.1.1 定义 Lambda 表达式是一个简洁的语法用于创建匿名函数。它们通常用于 LINQ 查询和委托。 (parameters) expression // 或 (parameters) { statement; }其中 parameters传递给 Lambda 表达式的参数可以省略括号 ()当只有一个参数时。称为goes to操作符分隔参数和方法体。expression 或 statements要执行的代码简单情况可以用一个表达式复杂逻辑可以使用代码块 {}。 注意 作用范围Lambda 表达式可以捕获外部变量但要小心这可能导致意外的闭包效果。类型推断C# 支持类型推断Lambda 表达式的参数类型在多数情况下可以自动推断无需显式声明类型。简洁性对于简单逻辑可以直接写成 Lambda 表达式对于复杂逻辑最好用命名方法避免代码难以阅读。 实例 // 示例使用 Lambda 表达式定义一个委托 Funcint, int, int add (a, b) a b; Console.WriteLine(add(2, 3)); // 输出 5// 示例使用 Lambda 表达式过滤数组中的元素 int[] numbers { 1, 2, 3, 4, 5 }; var evenNumbers numbers.Where(n n % 2 0); foreach (var num in evenNumbers) {Console.WriteLine(num); // 输出 2 4 }1.3.1.2 常用类型 Lambda 表达式通常用于定义委托或作为方法的参数例如 Func定义具有返回值的 Lambda 表达式。Action定义不具有返回值的 Lambda 表达式。Predicate定义返回 bool 类型的 Lambda 表达式常用于条件判断。 示例不同类型的 Lambda 表达式 Funcint, int, int multiply (x, y) x * y; Console.WriteLine(multiply(3, 4)); // 输出12Actionstring greet name Console.WriteLine($Hello, {name}!); greet(Alice); // 输出Hello, Alice!Predicateint isEven n n % 2 0; Console.WriteLine(isEven(4)); // 输出True1.3.1.3 Lambda 表达式与 LINQ Lambda 表达式在 LINQ 查询中常用于指定筛选条件、排序方式等。例如对一个 Listint 进行筛选和排序 Listint numbers new Listint { 1, 2, 3, 4, 5, 6 }; var evenNumbers numbers.Where(n n % 2 0).OrderBy(n n);foreach (var num in evenNumbers) {Console.WriteLine(num); // 输出2, 4, 6 }1.3.1.4 Lambda 表达式的捕获变量 Lambda 表达式可以捕获外部作用域中的变量。捕获的变量与闭包类似生命周期与 Lambda 表达式一致。 int factor 3; Funcint, int multiplyByFactor n n * factor; Console.WriteLine(multiplyByFactor(5)); // 输出15在这里factor 是一个外部变量multiplyByFactor 捕获了 factor并在 Lambda 表达式中使用它。 1.4 外部方法 1.4.1 定义 外部方法是指那些用非托管代码如C或C编写的函数这些函数被编译成动态链接库DLL或其他形式的可执行文件。C#程序通过P/InvokePlatform Invocation Services 机制调用这些外部方法P/Invoke 允许托管代码如C#调用非托管代码。 在C#中调用外部方法也称为外部函数或P/Invoke方法之前需要先声明这是因为C#是一种类型安全的语言它需要在编译时知道方法的签名即方法的名称、参数类型和返回类型。外部方法通常指的是那些用非托管代码如C或C编写的DLL文件实现的方法。 为什么需要先声明 类型安全C# 编译器需要在编译时知道方法的签名以确保调用时传递的参数类型和数量是正确的。元数据声明外部方法时可以提供关于方法的元数据如DLL名称、入口点名称等这些信息是运行时环境CLRCommon Language Runtime用来加载和调用非托管代码所必需的。编译时检查通过声明外部方法编译器可以在编译时检查调用的正确性减少运行时错误。 1.4.2 使用 在C#中可以使用DllImport属性来声明外部方法。DllImport属性指定了包含该方法的DLL文件的名称和入口点即方法的名称。以下是一个简单的例子 using System; using System.Runtime.InteropServices; class Program { // 声明外部方法 [DllImport(kernel32.dll, CharSet CharSet.Auto)] public static extern IntPtr GetModuleHandle(string lpModuleName); static void Main() { // 调用外部方法 IntPtr handle GetModuleHandle(kernel32.dll); Console.WriteLine(Handle: handle); } }在这个例子中GetModuleHandle是一个外部方法它位于kernel32.dll中。我们使用DllImport特性来声明这个方法并在Main方法中调用它。 注意事项 字符集使用CharSet属性指定字符集如 CharSet.Auto、CharSet.Ansi 或 CharSet.Unicode 这会影响字符串参数的传递方式。调用约定默认情况下P/Invoke使用stdcall调用约定。如果外部方法使用其他调用约定如cdecl需要使用CallingConvention枚举来指定。错误处理调用外部方法时可能会遇到各种错误如找不到DLL、方法签名不匹配等。因此适当的错误处理是非常重要的。 1.5 扩展方法 1.5.1 定义 在 C# 中扩展方法Extension Method是允许在不修改类代码或创建子类的情况下为现有类型添加 新方法的一种机制。扩展方法本质上是一个静态方法但它的调用方式和实例方法类似使得我们可以在不修改源代码的情况下增强类的功能。 扩展方法必须满足以下条件 必须定义在静态类中方法本身必须是静态的第一个参数必须使用 this 关键字修饰并指定参数类型即要扩展的类型 this 关键字的作用 标识扩展方法this 关键字告诉编译器这是一个扩展方法而不是普通的静态方法。指定扩展类型this 后面的参数类型就是要扩展的类型。调用方式可以像调用实例方法一样调用扩展方法。 扩展方法的优点 无需修改原类无需更改或继承现有类型即可添加新方法。提高代码可读性扩展方法让代码更具可读性因为它们可以像实例方法一样调用。方便维护扩展方法通常集中在一个静态类中有助于代码模块化和维护。 注意事项 扩展方法的命名冲突如果类型本身已经定义了一个与扩展方法同名的方法实例方法优先。扩展方法只会在没有实例方法的情况下被调用。this 关键字仅用于第一个参数扩展方法的第一个参数是要扩展的类型必须用 this 关键字修饰。扩展方法只能有一个 this 参数。命名空间的引用要使用扩展方法必须引用扩展方法所在的命名空间。适用场景扩展方法通常用于增强不可修改的类如第三方库类或基础类型如 string、int 等而不推荐滥用 1.5.2 操作示例 以下示例演示如何为 string 类型定义一个扩展方法 ToCapitalize用于将字符串的首字母大写 // 定义一个静态类来容纳扩展方法 public static class StringExtensions {// 定义一个静态扩展方法用于将字符串首字母大写public static string ToCapitalize(this string input){if (string.IsNullOrEmpty(input))return input;return char.ToUpper(input[0]) input.Substring(1).ToLower();} }// 使用扩展方法 public class Program {public static void Main(){string text hello world;// 调用扩展方法就像调用实例方法一样string capitalizedText text.ToCapitalize();Console.WriteLine(capitalizedText); // 输出 Hello world} }为 int 类型添加一个扩展方法计算该整数的平方 public static class IntExtensions {public static int Square(this int number){return number * number;} }public class Program {public static void Main(){int number 5;int square number.Square(); // 调用扩展方法Console.WriteLine(square); // 输出 25} }
http://www.dnsts.com.cn/news/63669.html

相关文章:

  • 南山网站设计多少钱教做面食的网站
  • 潍坊市房屋和城乡建设局网站网站建设公司itcask
  • 英文网站的外部链接 建设公司名字变了网站备案
  • 个人制作个网站活动线报app
  • 车行网站源码西安网站制作价格
  • 外贸营销系统湖南网站seo推广
  • 买的网站模板会影响有赞商城商家版
  • 怎样做京东网站网络营销是学什么
  • 学校要求做网站深圳建筑工地招聘信息
  • 漳州做网站建设游戏开发和软件开发哪个难
  • 专业网站设计速寻亿企邦湖北做网站教程哪家好
  • 个人特种证件查询网站ui界面设计实例100例
  • 广东企业网站seo报价做网站开发的公司哪家好
  • 南京做网站制作公司外贸网站建设公司流程图
  • 如何提交网站给百度重庆涪陵建设银行网站
  • 网站建设方案书写做一个app大概要多少钱
  • 郑州专业做淘宝网站汉阴县住房和城乡建设局网站
  • 自助建站系统有什么好处然后搭建网站
  • 网站特效怎么做自适应学广告设计去哪个学校好
  • 做外贸没网站可以吗数据分析师报名官网
  • 百度网站推广方案电商搜索关键词
  • 网页与网站设计说明软件下载官网源码
  • 驻马店做网站优化网站推广关键词排名
  • soho在哪里做网站网站建设需要提供什么东西
  • 成都网站设计推荐柚米wordpress08影院源码
  • 织梦猫网站模板中国最著名网站建设公司
  • 给别人做非法网站能判多久南通网站推广公司
  • go语做网站网站上不去原因
  • 什么蓝色 适合公司网站主色企业建立一个网站步骤
  • 购物网站宣传方案wordpress连接微博专业版 下载