我想要做的就是获取当前的类名,而java 在我的类名末尾添加了一个无用的无意义$ 1.我怎样才能摆脱它并只返回实际的类名?
String className = this.getClass().getName();
Run Code Online (Sandbox Code Playgroud) 我不是一个PHP开发人员,所以我不知道如果PHP是比较流行的使用显式的getter/setter方法,在纯OOP的风格,与私人领域(我喜欢的方式):
class MyClass {
private $firstField;
private $secondField;
public function getFirstField() {
return $this->firstField;
}
public function setFirstField($x) {
$this->firstField = $x;
}
public function getSecondField() {
return $this->secondField;
}
public function setSecondField($x) {
$this->secondField = $x;
}
}
Run Code Online (Sandbox Code Playgroud)
或只是公共领域:
class MyClass {
public $firstField;
public $secondField;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
假设我需要一个简单的私有帮助器方法,并且直观地在代码中它作为扩展方法是有意义的.有没有办法将该帮助程序封装到实际需要使用它的唯一类中?
例如,我试试这个:
class Program
{
static void Main(string[] args)
{
var value = 0;
value = value.GetNext(); // Compiler error
}
static int GetNext(this int i)
{
return i + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
编译器不"看到" GetNext()扩展方法.错误是:
必须在非泛型静态类中定义扩展方法
很公平,所以我将它包装在自己的类中,但仍然封装在它所属的对象中:
class Program
{
static void Main(string[] args)
{
var value = 0;
value = value.GetNext(); // Compiler error
}
static class Extensions
{
static int GetNext(this int i)
{
return i + 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
仍然没有骰子.现在错误说明:
必须在顶级静态类中定义扩展方法; 扩展是一个嵌套类.
这个要求有令人信服的理由吗?在某些情况下,辅助方法确实应该是私有封装的,并且如果辅助方法是扩展方法,则存在代码更清晰且更易读/可支持的情况.对于这两者相交的情况,既可以满足,也可以选择其中一种?
似乎理解模板模板param会杀了我:(,lemme解释我在脑海里制造的误解让我困惑:
template<class T>
class B {}; // A templated class
Run Code Online (Sandbox Code Playgroud)
这是另一个代码:
template<template<class X> class Z = B> // problem is in this line for me
class BB{};
Run Code Online (Sandbox Code Playgroud)
注意模板化类BB参数列表中的行,即:
template<class X> class Z = B
Run Code Online (Sandbox Code Playgroud)
现在我要问的是什么阻止c ++认为Z不是另一个模板化的Z类,即:
template<class X> class Z{
}
Run Code Online (Sandbox Code Playgroud)
而不是认为Z类是模板参数本身.
非常感谢,我真的很感激任何帮助从我的脑海中消除这种误解)
我正在设置一些单元测试并使用Rhino Mocks填充正在测试的对象.被模拟的事情之一是Task<HttpResponseMessage>,因为被测试的逻辑包括HttpClient对获取异步响应的调用.
所以我开始设置这样的模拟:
var httpClient = MockRepository.GenerateMock<HttpClient>();
var taskFunc = MockRepository.GenerateMock<Func<HttpResponseMessage>>();
var responseTask = MockRepository.GenerateMock<Task<HttpResponseMessage>>(taskFunc);
var response = MockRepository.GenerateMock<HttpResponseMessage>();
httpClient.Stub(c => c.PostAsJsonAsync<IEnumerable<LogMessage>>(Arg<string>.Is.Anything, Arg<IEnumerable<LogMessage>>.Is.Anything)).Return(responseTask);
responseTask.Stub(t => t.Result).Return(response);
response.Stub(r => r.IsSuccessStatusCode).Return(true);
Run Code Online (Sandbox Code Playgroud)
(测试的"行为"步骤是实例化被测对象,将其提供给它httpClient,并在其上运行一个方法."断言"将通过模拟验证对它们进行了预期的方法调用.)
在调试器中单步执行此操作,此行上有一个无限期挂起:
responseTask.Stub(t => t.Result).Return(response);
Run Code Online (Sandbox Code Playgroud)
我没有很多使用Rhino Mocks或C#异步的经验,所以我可能会忽略一些明显的东西.当然,目标是对.Result财产的任何调用都将返回response模拟.但看起来我的尝试本身也许正在调用.Result我期望无限期等待,因为它只是一个模拟,也许?
安排这个的正确方法是什么?基本上我需要为我的对象提供一个模拟HttpClient并声明一个方法是用一个特定的参数调用它的.
我发现很多次我不需要TryParse方法的out参数,但问题是必然的.在这里,我将展示一个不需要的例子.
我想检查字符串是否为整数,如果是整数则打印"整数"; 否则,打印"不是整数".所以这是代码:
string value = Console.ReadLine(); //Get a value from the user.
int num; //Why should I have it?? No need at all !
if (int.TryParse(value, out num))
{
Console.WriteLine("An integer");
}
else
{
Console.WriteLine("Not an integer");
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么TryParse总是返回一个out参数?为什么没有out参数就没有过载?
一般来说,php程序员是ob_start/ ob_get_clean()被认为是不好的做法吗?
输出缓冲有什么缺点吗?
有人可以提供一个简单的解决方案,如何在同一行上对齐表单输入,例如,当我构建一个表单时,我可以让它们在彼此的顶部对齐,它看起来很合理,但如果我放两个输入像textarea/text旁边的另一个文本或按钮,我得到垂直对齐差异.有没有办法解决这个问题,而不是摆弄边距和填充?
例如:
<style type='text/css'>
form{
display:inline;
}
textarea{
font-size:25px;
height:25px;
width:200px;
}
input.button{
height:25px;
width:50px;
}
</style>
<form>
<textarea >Value</textarea><input type='button' class='button' value='Go'>
</form>
Run Code Online (Sandbox Code Playgroud)