是否可以在C中完全编写操作系统?
完全上,我将所有内容都包含在引导加载程序中,但不包括BIOS/UEFI.
我是powershell的初学者,并且对C#适度了解.最近我写了这个powershell脚本,并想创建一个Hashset.所以我写了($ azAz是一个数组)
[System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collections.Generic.HashSet[string]($azAZ)
Run Code Online (Sandbox Code Playgroud)
并按下运行.我收到了这条消息:
New-Object : Cannot find an overload for "HashSet`1" and the argument count: "52".
At filename.ps1:10 char:55
+ [System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collecti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
Run Code Online (Sandbox Code Playgroud)
然后,我使用数组参数在powershell中使用googled构造函数,并将代码更改为:
[System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collections.Generic.HashSet[string](,$azAZ)
Run Code Online (Sandbox Code Playgroud)
不知何故,我现在收到这条消息:
New-Object : Cannot find an overload for "HashSet`1" and the argument count: "1".
At C:\Users\youngvoid\Desktop\test5.ps1:10 char:55
+ [System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collecti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ …Run Code Online (Sandbox Code Playgroud) 我最近阅读了关于属性和反射的内容,我认为在我的程序中包含元数据是一种很好的方法.我有这个抽象类,我希望从它继承的所有类都向类声明一些属性,因为我希望为我的程序创建自定义组件(那些派生类),并希望在运行时读取这些类的元数据.但是,派生类都必须显式声明我存储元数据的属性.那么如何在派生类中强制执行属性声明?谢谢.
根据MSDN:
"必须在公共非静态字段或属性上声明参数.应在属性上声明参数.该属性必须具有公共集访问器,如果指定了ValueFromPipeline或ValueFromPipelineByPropertyName关键字,则该属性必须具有公共get访问器."
为什么我必须在我的cmdlet ValueFromPipeline参数中声明get访问器?据我所知,PowerShell只需要将它们的值放入,而不是将它们读出来.谢谢(顺便说一句,我只是好奇这个行为:)).
为什么是
dir E:\Music -File -Exclude *.mp3 -Recurse | foreach {del $_.FullName}
Run Code Online (Sandbox Code Playgroud)
不工作?我测试了我能想到的所有可能性,但仍然无法正常工作。
提前致谢。
我有这个解决方案愉快地工作,我添加了这个属性:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)]
public class metadata : Attribute
{
string mid;
string mdescription;
Dictionary<string, string> mdata;
public string id
{
get
{
return mid;
}
}
public string description
{
get
{
return mdescription;
}
}
public Dictionary<string, string> data
{
get
{
return mdata;
}
}
public metadata(string thisid, string thisdescription, params KeyValuePair<string, string>[] thisdataarray)
{
mid = thisid;
mdescription = thisdescription;
mdata = new Dictionary<string, string>();
if (thisdataarray != null)
{ …Run Code Online (Sandbox Code Playgroud) 嗨我有一个代理作为参数的类,如代码所示,但我得到错误"错误1类型预期...\Classes\Class1.cs 218 33类"和"错误2;预期......\Classes\Class1.cs 218 96 Classes".我该如何解决这个问题?提前致谢!我试图传递它byref所以当一个类初始化时,它的一些方法附加到委托.
public constructor(ref delegate bool delegatename(someparameters))
{
some code
}
Run Code Online (Sandbox Code Playgroud)
现在什么都没有,它有效,tkx
我有这个方法:
public override void respond(params string[] resargs)
{
foreach (command cmd in pndgcmds)
{
cmd(this);
}
if (objs[resargs[0]].status)
objs[resargs[0]].request(resargs);
else
{
pndgcmds.Add(
(myclass master) =>
{
if (master.objs[resargs[0]].status != true) return;
master.objs[resargs[0]].request(resargs);
//code to remove the delegate
});
}
}
Run Code Online (Sandbox Code Playgroud)
检查对象是否能够响应,使其响应(如果有),否则将命令存储在字典中,以便在下次调用响应时检查并调用状态.
我有两个问题.
如何编写代码来删除委托?我不知道该怎么做.
如您所见,委托的许多内部工作依赖于方法参数.代表将如何表现?
提前致谢!
我有一个程序,侦听控制台stdin流.
Read()返回时,每个字符被读出一个接一个,并传递给method(). method()然后将角色附加到a StringBuilder.'\n',则method()调用respond(),打印出读取的字符并清除StringBuilder.但是,即使在控制台中键入内容并按Enter键后,我也必须按下/移动鼠标,鼠标按键或控制台焦点内的键盘才能回显键入的文本.更神秘的是,当我在第一个大括号中设置断点Main()并进入之后的每个语句时,程序正确执行.我怎样才能解决这个问题?非常感谢!
public class test
{
static byte[] buffer = new byte[1];
static Stream instrm = Console.OpenStandardInput();
static Stream outstrm = Console.OpenStandardOutput();
static System.Text.StringBuilder sb = new System.Text.StringBuilder();
static void Main()
{
while (true)
{
instrm.Read(buffer, 0, 1);
method(buffer);
}
}
public static void method(byte[] buffer)
{
sb.Append(System.Text.Encoding.UTF8.GetString(buffer));
if (buffer[0] == (byte)10) respond();
}
public static void respond()
{
byte[] …Run Code Online (Sandbox Code Playgroud) 作为标题.
由于_是移动到行中的第一个非空白字符,并且c + movement通常意味着从光标到移动的缓冲区(也就是删除+进入插入模式),为什么这不起作用?它似乎删除整行,而不是从光标到行的开头(aka cc或C).有替代方案吗?
当您调用外部.exe命令时,如何使PowerShell阻塞直到外部结束?
c# ×7
powershell ×4
attributes ×2
constructor ×2
delegates ×2
parameters ×2
arguments ×1
arrays ×1
block ×1
c ×1
collections ×1
events ×1
hashset ×1
inheritance ×1
pipeline ×1
properties ×1
reflection ×1
stdin ×1
stdout ×1
stream ×1
vim ×1