c# – 具有“this”关键字的接口成员

c# – 具有“this”关键字的接口成员,第1张

概述在浏览我们客户的代码时,我遇到了C#中的接口,它有一个带有“this”关键字成员. public interface ISettings{ string this[string key] { get; }} 我不知道接口成员名称以“this”开头的任何此类模式或实践.为了解更多,我检查了这个接口的实现,但仍然无法弄清楚它的用途. internal class SettingsMana 在浏览我们客户的代码时,我遇到了C#中的接口,它有一个带有“this”关键字的成员.
public interface ISettings{    string this[string key] { get; }}

我不知道接口成员名称以“this”开头的任何此类模式或实践.为了解更多,我检查了这个接口的实现,但仍然无法弄清楚它的用途.

internal class SettingsManager : ISettings{    public string this[string key]    {        get { return ConfigurationManager.AppSettings[key]; }    }   ...   ...}

这是调用者代码:

public static class Utility{   public static ISettings Handler { get; set; }    public static string Get(string key,string defaultValue)    {        var result = Handler[key];        return Is.EmptyString(result) ? defaultValue : result;    }}

不幸的是,我无法调试此代码以查看实时内容.但对此非常好奇.如果实现的代码最终返回一个字符串,那么“this”关键字的用途是什么?

解决方法 它使您能够执行以下 *** 作:
SettingsManager settings = new SettingsManager();var setting = settings["my setting"];

通常使用List< T>.类.

它有定义:

public class List<T> : IList<T>,ICollection<T>,IList,ICollection,IReadonlyList<T>,IReadonlyCollection<T>,IEnumerable<T>,IEnumerable{    // ....    public T this[int index] { get; set; }    // ....}

这允许您以与数组类似的方式“索引”内部值.

using System;using System.Collections.Generic;using System.IO;using System.linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace test{    static class Program    {        static voID Main()        {            List<string> myStrings = new List<string>();            myStrings.Add("abc");            myStrings.Add("def");            Console.Writeline(myStrings[0]); // outputs: "abc"            Console.Writeline(myStrings[1]); // outputs: "def"            Console.Read();        }    }}
总结

以上是内存溢出为你收集整理的c# – 具有“this”关键字的接口成员全部内容,希望文章能够帮你解决c# – 具有“this”关键字的接口成员所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存