Как я понимаю, вы хотите убрать любое из «4 коротких имен», если они уже существуют, прежде чем делать что-либо еще. Я хотел бы перейти с ниже, пожалуйста, обратите внимание, я не запускал код .. Я надеюсь, что вы правильно поняли
///Loop through directory to standardize file names
try
{
//Cleanup source folder
foreach (string fileShortName in files)
{
if (File.Exists(fileDirectory_Source + fileShortName))
{
//Time to move the file, its old
errorText = errorText + "Old File: " + fileShortName + " moved into the Old File folder.\r\n";
File.Move(dirInfo_Source + fileShortName, dirInfo_Source + "Old Files\\" + Path.GetFileNameWithoutExtension(fileShortName) + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + Path.GetExtension(fileShortName));
}
}
foreach (FileInfo fi in dirInfo_Source.GetFiles())
То, с чем Вы связались, является директивой использования. Объявление использования может использоваться прекрасное с шаблонными базовыми классами (не искали его в стандарте, но просто протестировали его с компилятором):
template<typename T> struct c1 {
void foo() { std::cout << "empty" << std::endl; }
};
template<typename T> struct c2 : c1<T> {
using c1<T>::foo;
void foo(int) { std::cout << "int" << std::endl; }
};
int main() {
c2<void> c;
c.foo();
c.foo(10);
}
Компилятор правильно находит без параметров foo
функция из-за нашего объявления использования, повторно объявляющего это в объем c2
, и выводы ожидаемый результат.
Править: обновленный вопрос. вот обновленный ответ:
Статья права относительно этого, Нельзя использовать шаблонный идентификатор (шаблонное имя и аргументы). Но можно поставить шаблонное имя:
struct c1 {
template<int> void foo() { std::cout << "empty" << std::endl; }
};
struct c2 : c1 {
using c1::foo; // using c1::foo<10> is not valid
void foo(int) { std::cout << "int" << std::endl; }
};
int main() {
c2 c;
c.foo<10>();
c.foo(10);
}