小编Gil*_*ams的帖子

C# - GetMethod返回null

A上课了:

public abstract class A
{

}
Run Code Online (Sandbox Code Playgroud)

然后我有B一个源于它的课程:

public sealed class B : A
{
    public void SomeMethod()
    {
        var method = this.GetType().GetMethod("AddText");
    }

    private void AddText(string text)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么GetMethod返回null?

c#

12
推荐指数
2
解决办法
1万
查看次数

通用数字类型

我有一个接受参数的扩展方法T.此参数是数字类型,以下之一:byte,short,int和long.

我需要检查是否T等于0.怎么可能这样做?

public static void WriteFlaggedValue<T>(this OutPacket outPacket, uint flag, T value, ref uint outputFlag) where T : struct,
      IComparable,
      IComparable<T>,
      IConvertible,
      IEquatable<T>,
      IFormattable
    {
        if (value == 0)
        {

        }

    }
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
347
查看次数

用Java创建迭代器

我有以下课程:

public abstract class MapObjects<MapleMapObject> {
    private Map map;
    private HashMap<Integer, MapleMapObject> objects;

    public MapObjects(Map map) {
        this.map = map;
        this.objects = new HashMap<>();
    }

    public void add(MapleMapObject object) {
        objects.put(map.getObjectId(), object);

        onAdd();
    }

    public void remove(MapleMapObject object) {
        onRemove();

        objects.remove(object.getObjectId());
    }

    protected abstract void onAdd();

    protected abstract void onRemove();
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个迭代器,以便我可以迭代从这个类扩展的类.例如,如果我有一个名为的类MapCharacters extends MapObjects<Character>,我希望能够执行以下操作:

characters = new MapCharacters(this);
for (Character character : characters)
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?

java iterator

4
推荐指数
1
解决办法
150
查看次数

如何使用布尔参数调用 bash 函数?

我有一个名为的函数install_cont,它从我的 bash 脚本中调用了两次。但是,在该函数内部有一个代码块,仅当布尔参数为 true 时我才想执行该代码块。在Python中我会这样做:

def install_cont(expres=False):
    if expres:
         # Do some code...

install_cont(True)
install_cont() # Can call with default False
Run Code Online (Sandbox Code Playgroud)

我如何在 bash 中实现这一目标?在网上阅读,我明白所有变量都是字符串。然而,实现类似布尔参数的最佳方法是什么?

unix bash

4
推荐指数
1
解决办法
1万
查看次数

Bash 脚本:将字符串编码为 base64 到变量中

我有一个usernamepassword变量。我想将它们编码为 base64,格式为username:password.

#!/bin/bash
username=username
password=password

echo Encoding username/password...
echo $username:$password | base64
Run Code Online (Sandbox Code Playgroud)

这可行,但我不确定如何将输出放入变量中而不是将其写入控制台。

顺便说一句,为什么输出与https://www.base64encode.org/这样的网站不同?

bash base64 command-substitution

4
推荐指数
1
解决办法
1万
查看次数

查找最近时间的算法

我有一个DateTime值列表,其中的日期包含小时和分钟:

List<DateTime> times = times = new List<DateTime>()
{
    new DateTime(2019, 01, 01, 17, 00, 00),
    new DateTime(2019, 01, 01, 18, 45, 00),
    new DateTime(2019, 01, 01, 19, 00, 00),
    new DateTime(2019, 01, 01, 19, 30, 00),
    new DateTime(2019, 01, 01, 22, 30, 00)
};

DateTime current = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

我将它们都放在一个ComboBox中,我想做某种算法,以便在加载表单时,它将检查当前时间并找到与当前时间最接近的值,然后选择包含该小时的ComboBox项。

我该如何实现?我试图遍历所有它们并检查至少一个小时,但这似乎不起作用。有更聪明的方法吗?

例如:如果当前时间是17:32,它将选择17:00,因为那是最接近的时间。但是,如果当前时间是18:20,它将选择18:45,依此类推。

c# datetime

3
推荐指数
1
解决办法
138
查看次数

如何覆盖抽象类的属性?

我有一个名为的抽象类CharacterBase。在里面,我有一些属性。例如:

public int Level { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有一个名为的类Character,它继承自CharacterBase。我希望能够以某种方式覆盖该Level属性,并成为我自己的属性。例如:

int level;

public (override?) int Level
{
    get
    {
        return level;
    }
    set
    {
        level = value;
        Console.WriteLine("The new level is " + level + ".");
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以覆盖此属性,并使其成为我自己的属性而不是抽象类的属性?

编辑:我标记Level为虚拟属性。这是正确的方法吗?

c# properties abstract

1
推荐指数
1
解决办法
1082
查看次数

C++ C2676错误

我正在尝试建立一个我在网上找到的项目.出于某种原因,即使看起来我不应该,我也会收到错误.它有以下几类:

template <typename K, typename V>
class smit
{
public:
    smit(map<K, V>* std, vector<K>* ky, SRWLOCK* lock, int t)
    {
        stdmap = std;
        keys = ky;
        maplock = lock;
        top = t;
        index = 0;
    }

    ~smit()
    {
        ReleaseSRWLockShared(maplock);
    }

    V* operator -> ()
    {
        return &stdmap->at(keys->at(index));
    }

    V* get()
    {
        return &stdmap->at(keys->at(index));
    }

    void operator ++ ()
    {
        index++;
    }

    bool belowtop()
    {
        return index < top;
    }

    int getindex()
    {
        return index;
    }
private:
    map<K, V>* stdmap;
    vector<K>* …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
148
查看次数

C# - 多态混淆重载和方法隐藏

我有一个名为Itemclass的类,它作为一个抽象类,但没有定义为一个.这个类有一个MaxPerStack属性:

public class Item
{
    public short MaxPerStack
    {
        get
        {
            return this.Data.MaxPerStack;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个名为Equip派生Item类的类,并且还有一个名为property的属性MaxPerStack,声明为new:

public class Equip : Item
{
    public new short MaxPerStack
    {
        get
        {
            return 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我调用了以下方法Add,它使用以下MaxPerStack属性item:

public void Add(Item item)
{
    Console.WriteLine("Stack: {0}.", item.MaxPerStack);
}
Run Code Online (Sandbox Code Playgroud)

当我做:

Add(new Equip());
Run Code Online (Sandbox Code Playgroud)

它属于一个人的MaxPerStack财产.ItemEquip

为什么会这样?

c#

-2
推荐指数
1
解决办法
80
查看次数

标签 统计

c# ×5

bash ×2

abstract ×1

base64 ×1

c++ ×1

command-substitution ×1

datetime ×1

iterator ×1

java ×1

properties ×1

unix ×1