Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何强制继承类在C#中实现静态方法?

如何强制继承类在C#中实现静态方法?
EN

Stack Overflow用户
提问于 2009-12-15 00:51:46
回答 5查看 11K关注 0票数 21

我要做的就是确保确保类Item的子类实现静态方法,我希望在编译时检查这个方法,以避免运行时出错。

带有静态方法的抽象类似乎不起作用:

错误:静态成员不能标记为覆盖、虚拟或抽象

代码语言:javascript
运行
AI代码解释
复制
public abstract class Item
{
    public static abstract Item GetHistoricalItem(int id, DateTime pastDateTime);
}

public class Customer : Item
{
    public static override Customer GetHistoricalItem(int id, DateTime pastDateTime)
    {
        return new Customer();
    }
}

public class Address : Item
{
    public static override Address GetHistoricalItem(int id, DateTime pastDateTime)
    {
        return new Address();
    }
}

和接口似乎也不起作用:

错误:客户没有实现接口成员GetHistoricalItem()

代码语言:javascript
运行
AI代码解释
复制
public class Customer : Item, HistoricalItem
{
    public static Customer GetHistoricalItem(int id, DateTime pastDateTime)
    {
        return new Customer();
    }
}

public class Address : Item, HistoricalItem
{
    public static Address GetHistoricalItem(int id, DateTime pastDateTime)
    {
        return new Address();
    }
}

interface HistoricalItem
{
    Item GetHistoricalItem();
}

是否有一些解决办法让编译器检查继承类是否实现了具有特定签名的静态方法?

EN

回答 5

Stack Overflow用户

发布于 2009-12-15 01:14:38

我为您的场景找到了一个解决办法:

代码语言:javascript
运行
AI代码解释
复制
public class Customer : Reference<Customer>, IHistoricalItem
{
}

public class Address : Reference<Address>, IHistoricalItem
{
}

public interface IHistoricalItem
{
}

public class Reference<T> where T : IHistoricalItem, new()
{
    public static T GetHistoricItem(int id, DateTime pastDateTime)
    {
        return new T();
    }
}

希望这能帮上忙!

票数 21
EN

Stack Overflow用户

发布于 2009-12-15 00:56:11

票数 5
EN

Stack Overflow用户

发布于 2009-12-15 01:01:34

强迫客户端实现静态方法是没有意义的--静态方法是“不可变的”。(也许有更好的方法来描述它们,但这是我现在所能想到的全部!)

如果需要某种覆盖,我将考虑重新访问设计,可能使用某种形式的单元素和注入的组合。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1906053

复制
相关文章
Hive左连接_oracle左外连接
大家好,又见面了,我是你们的朋友全栈君。 CREATE EXTERNAL TABLE IF NOT EXISTS a( telno STRING, other STRING ) PARTITIONED BY(day String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘|’;
全栈程序员站长
2022/10/02
1.3K0
mysql左连接和右连接_MYSQL 左连接与右连接
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
全栈程序员站长
2022/09/05
16.2K0
mysql左连接和右连接_MYSQL 左连接与右连接
HQL的左连接_左连接与右连接的区别
,但是默认使用的内连接,就是说外键必须匹配的记录才能查出来,实现不了要求。 当我决定用左连接查询之后,做了很多尝试,但是因为对HQL不够熟悉,都没有达到要求。比如这样的
全栈程序员站长
2022/09/29
1.3K0
ClickHouse左连接
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
8720
ClickHouse左连接
mysql中左连接查询_mysql左连接「建议收藏」
查询语句开始 会根据 on后面的条件创建一张虚拟表,左边表是全部数据,右边表会根据on后面的条件进行筛选。
全栈程序员站长
2022/08/11
2.4K0
mysql数据库语句左连接_MySQL 左连接 右连接 详解
aID aNum bID bName
全栈程序员站长
2022/06/27
27.5K0
mysql 左连接 自连接 例子
逻辑:先通过左连接将看了湖南卫视和北京卫视的查出来,然后再将看了湖南卫视但不在刚才查出的结果中的用户查出来。
全栈程序员站长
2022/09/03
3.1K0
mysql 左连接 自连接 例子
左连接,右连接,内连接,外连接
这里之前一直没有写,主要原因觉得好多东西比较基础,没想都写,但是后来觉得,学习的话应该是扫盲和汇总的阶段,所以这里也单独写一下
名字是乱打的
2021/12/22
2.2K0
左连接,右连接,内连接,外连接
mysql左连接查询
左连接查询:以左表为主表,右表为从表,查询符合条件的数据 1.当右表中数据匹配不到时展示为空 例: 左表两条数据,按条件匹配到右表一条数据且匹配左表第一条,结果展示两条数据,且第二条数据右表中的字段全部为null 2.当匹配到右表的数据为多条时,左表数据会重复展示,不会自动合并 例: 左表数据一条,按条件匹配到右表数据三条,结果展示三条数据,左表数据均相同,右表数据不同
全栈程序员站长
2022/09/07
2.6K0
mysql连接查询(左连接,右连接,内连接)
以上就是MySQL 连接查询的资料整理,大家如有疑问可以留言讨论,共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
叫我可儿呀
2019/11/30
12K0
mysql连接查询(左连接,右连接,内连接)
内连接、左连接、右连接区别
`Aid` int(10) NOT NULL DEFAULT 1 COMMENT '主键' ,
一觉睡到小时候
2019/07/04
1.2K0
内连接、左连接、右连接区别
SQL查询左连接、右连接、内连接[通俗易懂]
1、左连接的定义:是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
全栈程序员站长
2022/07/22
7.8K0
SQL查询左连接、右连接、内连接[通俗易懂]
mysql左连接 右连接 内连接的区别[通俗易懂]
a表 id name b表 id job parent_id
全栈程序员站长
2022/09/05
2.7K0
Access/VBA/Excel-左连接-11
系统:Windows 7 软件:Excel 2010/Access 2010 这个系列开展一个新的篇章,重点关注Access数据库 主体框架:以Excel作为操作界面,Access作为数据库 今天讲讲如何将数据库中满足要求的数据拿出来 涉及知识:, Part 1:目标 成绩表 学生信息表 运行过程 获取学号为1101学生在不同年级的语文成绩,输出信息包括:姓名,学号,性别,年级,语文成绩 最终想要获得的信息来自于两个工作表,所以需要连接查询 逻辑过程 连接数据库 根据需求确定SQL语句 执行SQ
企鹅号小编
2018/01/10
1.1K0
Access/VBA/Excel-左连接-11
mysql左连接查询慢[通俗易懂]
之前一直用的Oracle,今天用mysql查询一个很普通的左连接的时候,发现速度很慢。 select x.fid,x.isbirt,x.fscoresum,x.fsystemscore,x.feffectivescore from tablea x left join tableb h on x.fitemid = h.fid where h.fprojectid=’’ 这个sql耗时:
全栈程序员站长
2022/08/31
2.8K0
mysql左连接查询慢[通俗易懂]
mysql左连接去重
create table TB_BATCH( ID int(11) not null auto_increment, BATCH_NO VARCHAR(32) comment ‘批次号’, CONTRACT_ID int(11) comment ‘合同ID’, CONTRACT_NO VARCHAR(64) comment ‘合同编号’, RULE_ID int(11) comment ‘规则ID’, CITY VARCHAR(64) comment ‘城市’, COMPANY_NAME VARCHAR(128) comment ‘企业名称’, SERVICE_ADDRESS VARCHAR(128) comment ‘上门地址’, EXP_DATE date comment ‘日期’, EXP_BEGIN_TIME time comment ‘开始时间’, EXP_END_TIME time comment ‘结束时间’, MASSAGIST_COUNT int(4) comment ‘技师数量’, STATUS VARCHAR(16) not null comment ‘状态:待分配、已分配、已确认、服务中、已完成、已取消’, OPERATOR varchar(30), CREATE_TIME datetime, MODIFY_TIME datetime, primary key (ID) );
全栈程序员站长
2022/09/06
1.2K0
mysql左连接去重
Mysql中外连接,内连接,左连接,右连接的区别
可能第一种通过where语句查询,大家都能理解. 但是不知道大家有没有去尝试过理解下面关于内连接与外连接查询方式的区别 ,接下来我们先通过一张图来演示一下连接的整个层级关系:
萌萌哒的瓤瓤
2021/01/13
4.6K0
Mysql中外连接,内连接,左连接,右连接的区别
SQL 内连接,外连接(左外连接、右外连接)
语句:select * from a_table a inner join b_table bon a.a_id = b.b_id;
birdskyws
2018/09/12
11.7K0
SQL 内连接,外连接(左外连接、右外连接)
Mysql—— 内连接、左连接、右连接以及全连接查询
语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;
全栈程序员站长
2022/08/10
4.3K0
Mysql—— 内连接、左连接、右连接以及全连接查询
点击加载更多

相似问题

三个表的左连接

21

三个表之间的左连接(带连接表)

12

PHP + mysql -左连接-三个表

30

三个表的左外连接

10

左外部连接(三个表之间的连接)?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档