Unity3d-C#之where

本文简要介绍了Unity3d中C#的where关键字,它用于进行范型约束,允许在泛型类或方法中限制类型参数。内容主要涵盖where的基本用法,并通过示例展示了如何在函数中应用where约束。
部署运行你感兴趣的模型镜像

where简单的说就是做范型约束,更多内容参见官方文档:http://msdn.microsoft.com/zh-cn/library/bb384067.aspx

namespace TestCSharp
{
    class BaseView
    {
        public int ViewId;
        public string ViewName;

        public string GetInfo()
        {
            return string.Format("viewid:{0},viewName:{1}",this.ViewId,this.ViewName);
        }
    }
}

namespace TestCSharp
{
    class BattleView : BaseView
    {
        public string CityName;
        public int Hp;

        public BattleView()
        {
            this.ViewId = 1;
            this.ViewName = "BattleView";
        }
    }
}
namespace TestCSharp
{
    class LoginView : BaseView
    {
        public string UserName;
        public string Password;

        public LoginView()
        {
            this.ViewId = 0;
            this.ViewName = "LoginView";
        }
    }
}

using System;

namespace TestCSharp
{
    class ViewFactory<T> where T : BaseView, new()
    {
        private readonly T mView = new T();

        public void Print()
        {
            Console.WriteLine(mView.GetInfo());
        }
    }
}

using System;
using System.Collections;
using System.Collections.Generic;

namespace TestCSharp
{
 
    class MainClass
    {
        public static void Main(string[] args)
        {
            ViewFactory<LoginView> loginView = new ViewFactory<LoginView>();
            loginView.Print();

            ViewFactory<BattleView> battleView = new ViewFactory<BattleView>();
            battleView.Print();

            //error
            //ViewFactory<Object> createCharView = new ViewFactory<Object>();
        }

      
    }
   
}

上面是约束构造函数,使用 new 运算符创建类型参数的实例。下面我们改造为函数

using System;

namespace TestCSharp
{
    class ViewFactory
    {


        public static void RegView<T>(int viewId, string viewName) where T : BaseView, new()
        {
            
            T mView = new T {ViewId = viewId, ViewName = viewName};
            Console.WriteLine(mView.GetInfo());
        }

    }
}

using System;
using System.Collections;
using System.Collections.Generic;

namespace TestCSharp
{
 
    class MainClass
    {
        public static void Main(string[] args)
        {
            ViewFactory.RegView<LoginView>(100,"LoginView");
            ViewFactory.RegView<BattleView>(200, "BattleView");
        }

      
    }
   
}

同样也是创建对象的约束。


您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值