C#梳理【匿名方法Anonymous methods】

C# 匿名方法

我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。

匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。

在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。

编写匿名方法的语法

匿名方法是通过使用 delegate 关键字创建委托实例来声明的。例如:

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
    Console.WriteLine("Anonymous Method: {0}", x);
};

代码块 Console.WriteLine("Anonymous Method: {0}", x); 是匿名方法的主体。

委托可以通过匿名方法调用,也可以通过命名方法调用,即,通过向委托对象传递方法参数。

例如:

nc(10);

匿名方法与委托的实例

下面的实例演示了匿名方法的概念:

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
    class TestDelegate
    {
        static int num = 10;
        public static void AddNum(int p)
        {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void MultNum(int q)
        {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            // 使用匿名方法调用委托
            nc(10);

            // 使用命名方法实例化委托
            nc =  new NumberChanger(AddNum);
            
            // 使用命名方法调用委托
            nc(5);

            // 使用另一个命名方法实例化委托
            nc =  new NumberChanger(MultNum);
            
            // 使用命名方法调用委托
            nc(2);
            Console.ReadKey();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

Anonymous Method: 10
Named Method: 15
Named Method: 30


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用C#的FtpWebRequest类来实现FTP匿名登录并下载文件。下面是一个示例代码: ```csharp using System; using System.IO; using System.Net; class Program { static void Main(string[] args) { string ftpUrl = "ftp://example.com/file.txt"; string localPath = "C:\\local\\file.txt"; try { // 创建FTP请求对象 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential("anonymous", ""); // 获取FTP服务器的响应 using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) { // 打开本地文件流 using (Stream stream = response.GetResponseStream()) { // 创建本地文件 using (FileStream fileStream = new FileStream(localPath, FileMode.Create)) { byte[] buffer = new byte[1024]; int bytesRead = 0; // 从FTP服务器读取数据,并写入本地文件 while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { fileStream.Write(buffer, 0, bytesRead); } } } } Console.WriteLine("文件下载成功!"); } catch (Exception ex) { Console.WriteLine("文件下载失败: " + ex.Message); } } } ``` 请将示例代码中的 `ftp://example.com/file.txt` 替换为实际的FTP服务器地址和文件路径,将 `C:\\local\\file.txt` 替换为本地保存文件的路径和文件名。这段代码会使用匿名登录凭据从FTP服务器下载文件,并将其保存到本地路径中。 注意:匿名登录是通过提供 "anonymous" 作为用户名和空字符串作为密码来实现的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值