在C#中,我有基类Product和派生类Widget.
产品包含静态方法MyMethod().
我想从静态方法Widget.MyMethod()调用静态方法Product.MyMethod().
我不能使用base关键字,因为它只适用于实例方法.
我可以显式地调用Product.MyMethod(),但如果我稍后将Widget更改为从另一个类派生,我必须修改该方法.
C#中有一些类似于base的语法允许我从派生类的静态方法中调用基类的静态方法吗?
例如.假设我这样做:
dev.new(width=5, height=4)
plot(1:20)
Run Code Online (Sandbox Code Playgroud)
现在我想做
plot(1:40)
Run Code Online (Sandbox Code Playgroud)
但我想要一个更大的窗口.
我猜这样做的方法是(假设我不想打开一个新窗口)
plot(1:40, width=10, height=4)
Run Code Online (Sandbox Code Playgroud)
这当然不起作用.
我看到的唯一解决方案是关闭窗口并启动一个新窗口.(这将结束我的绘图历史)
有没有更好的办法 ?
谢谢.
这是为了有一个很好的短URL,它指的是数据库中的md5哈希.我想转换这样的东西:
a7d2cd9e0e09bebb6a520af48205ced1
进入这样的事情:
hW9lM5f27
这些都包含大约相同数量的信息.该方法不必是直接的和可逆的,但这样会很好(更灵活).至少我希望随机生成的字符串以十六进制哈希作为种子,因此它是可重现的.我确信有很多可能的答案,我很想知道人们会如何以优雅的方式做到这一点.
哦,这不需要与原始哈希完美的1:1对应,但这将是一个奖励(我想我已经暗示了可逆性标准).如果可能的话,我想避免碰撞.
编辑 我意识到我的初步计算是完全错误的(感谢人们在这里回答,但我花了一些时间才知道)并且通过将所有小写字母和大写字母放入混合中,你无法真正减少字符串长度.所以我想我会想要一些不能直接从hex转换为base 62的东西.
我的工作,涉及到了很多接口和继承,它开始变得有点棘手的项目,现在我碰到的一个问题.
我有一个抽象类State,它接受一个Game对象作为构造函数参数.在我的Game类的构造函数中,它接受一个State.这个想法是,当从抽象基类Game类继承时,在调用基类的构造函数时,你给它一个初始的State对象.但是,此State对象与您正在创建它的游戏相同.代码如下所示:
public class PushGame : ManiaGame
{
public PushGame() :
base(GamePlatform.Windows, new PlayState(this), 60)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我只能假设因为'this'关键字在构造函数开始执行之后才可用.试图在基类的构造函数中使用它显然不起作用.那么对我来说最好的解决方法是什么呢?我的计划B是从Game类的构造函数中删除State参数,然后在构造函数代码中设置状态.
这样做有一种更简单,更少侵入性的方式吗?
我想将密度曲线添加到直方图和累积直方图,如下所示:
到目前为止,我可以去:
hist.cum <- function(x, plot=TRUE, ...){
h <- hist(x, plot=FALSE, ...)
h$counts <- cumsum(h$counts)
h$density <- cumsum(h$density)
h$itensities <- cumsum(h$itensities)
if(plot)
plot(h)
h
}
x <- rnorm(100, 15, 5)
hist.cum(x)
hist(x, add=TRUE, col="lightseagreen")
#
lines (density(x), add = TRUE, col="red")
Run Code Online (Sandbox Code Playgroud) 我正在学习C#,我遇到了以下问题.我有两个类:base和derived:
class MyBase
{
public void MyMethod()
{
Console.WriteLine("MyBase::MyMethod()");
}
}
class MyDerived: MyBase
{
public void MyMethod()
{
Console.WriteLine("MyDerived::MyMethod()");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,没有virtual
和override
关键词.当我编译它时,我得到警告(当然是预期的)我试图隐藏MyMethod
在MyBase
课堂上.
我想要做的是从具有派生类实例的基类调用该方法.我是这样做的:
MyDerived myDerived = new MyDerived();
((MyBase)myDerived).MyMethod();
Run Code Online (Sandbox Code Playgroud)
当我没有virtual
在方法中指定任何等关键字时,它工作正常.我试着把关键字组合起来,得到了以下结果:
| MyBase::MyMethod | MyDerived::MyMethod | Result printed on the console |
| -----------------|---------------------|-------------------------------|
| - | - | MyBase::MyMethod() |
| - | new | MyBase::MyMethod() |
| virtual | new | MyBase::MyMethod() |
| virtual | override | …
Run Code Online (Sandbox Code Playgroud) 在这个字体大小调整大小的教程中:
作者使用parseFloat和第二个参数,我在这里读到:
应该指定所提供的数字 - 字符串的基数,以便您可以将它作为第二个参数提供给它'0x10'并将其识别为HEX.
问题是,我测试的浏览器似乎没有这样做.
这些家伙是否与Java混淆了?
在这个问题中,我称之为"浮点数""十进制数",以防止使用float
/ double
Java原始数据类型进行ambiguation .术语"十进制"与"基数10"无关.
我用这种方式表示任何基数的十进制数:
class Decimal{
int[] digits;
int exponent;
int base;
int signum;
}
Run Code Online (Sandbox Code Playgroud)
它大致表达了这个double
值:
public double toDouble(){
if(signum == 0) return 0d;
double out = 0d;
for(int i = digits.length - 1, j = 0; i >= 0; i--, j++){
out += digits[i] * Math.pow(base, j + exponent);
}
return out * signum;
}
Run Code Online (Sandbox Code Playgroud)
我知道有些转换是不可能的.例如,无法转换0.1 (base 3)
为基数10,因为它是重复的小数.类似地,转换0.1 (base 9)
到基础3是不可能的,但是可以进行协调0.3 (base 3)
.可能还有其他一些我没有考虑过的案例.
对于整数,从基数10到基数2的基数变化的传统方式(手动)是将数字除以2的指数,并且从基数2到基数10将数字乘以2的相应指数.从基数x变为基数 …
我已经搜索了堆栈溢出来寻找这个(可能是简单的)问题的答案,但我看到的大多数解决方案看起来都过于复杂且难以理解.
我有一个模型"Post",它是一个抽象的基类.模型"公告"和"事件"继承自Post.
现在我在其他模型中保留相关的事件和公告列表.例如,我在另一个模型中有"removed_events"和"removed_announcements"字段.
但是,在我的项目中,"removed_events"和"removed_announcements"的处理方式完全相同.没有必要消除"删除的事件"和"删除的公告"之间的歧义.换句话说,保持跟踪"removed_posts"的字段就足够了.
我不知道如何(或许不能)创建一个字段"removed_posts",因为Post是抽象的.但是,现在我觉得我在代码中重复自己(并且不得不做一些混乱 - 一些检查以确定我正在看的帖子是一个事件还是一个公告并将其添加到相应的删除字段).
这里最好的选择是什么?我可以使Posts非抽象,但Post对象本身永远不应该创建,我不认为我可以在非抽象对象上强制执行.
我对数据库的理解很薄弱,但我的印象是,由于连接,使Post非抽象会使数据库复杂化.这是一个大问题吗?
最后,在其他模型中还有其他字段,我想将event_list和announcement_list中的内容压缩到post_list中,但这些字段确实需要消除歧义.我可以根据帖子类型过滤post_list,但是对filter()的调用比单独直接访问事件和公告列表要慢,不是吗?这里有什么建议?
非常感谢您阅读本文.
base ×10
c# ×3
inheritance ×3
class ×2
plot ×2
r ×2
abstract ×1
algorithm ×1
c++ ×1
constructor ×1
django ×1
graph ×1
graphics ×1
hex ×1
java ×1
javascript ×1
math ×1
overriding ×1
parsefloat ×1
php ×1
random ×1
static ×1
this ×1
window ×1